DELPHI РАБОТА С API VKONTAKTE (VKONTAKTE) ЧАСТ 2 - Мрежи и интернет - Програмиране - Каталог
Продължаваме да пишем приложение на Delphi за работа с API на vkontakte. Последния път се спряхме на факта, че започнахме да създаваме заявка за показване на разширена информация за потребителя. Заявката излезе така:
http://api.vkontakte.ru/api.php? api_id=1905253& формат=XML& метод =getUserInfoEx
Искам веднага да кажа, че такова искане няма да работи, защото все още не сме добавили няколко много важни параметъра към него, а именно параметрите sig и sid.
Сигурен съм, че много от вас не разбраха много от написаното по-горе), така че ще се опитам да дъвча всичко и да го сложа в устата си.
В нашия случай подписът на sig или заявката ще изглежда така:
UserIDVKontakte api_ >ApplicationID format=XMLmethod=getUserInfoExu >UserIDVKontakte v=3.0 SecretSession
Нека да разгледаме всичко:
- Вместо потребителския идентификатор на Vkontakte, ние ще заменим нашия ID (можете да го намерите, като посетите страницата http://vkontakte.ru/settings.php, в раздела Адрес на вашата страница = > Вашият номер: ще бъде посочен този > ID на приложението, ние ще заменим > Vkontakte потребителски идентификатор.
- v=3.0 означава, че версията на API е 3.0
- Завършва цялата тайна или тайна сесия.
Стойността на всички променливи ни е известна, с изключение на последната - Session Secret.
http://vkontakte.ru/api/login_success.html#session=%7B%22 mid %22%3A63790444%2C%22 sid %22%3A%22756d0c7c91db66f66f82dba3cb5b67be6629d2295f878d9a70210836 %2 2%2C%22 тайната %22%3A%224c63d7e10d%22%2C%22 изтича
И така, поставяме друг компонент Button във формуляра (ще го нарека button2) и компонента Label, и двата от раздела Standard
Влизаме в кода и в самото начало след ключадуми var създават 3 глобални променливи stroka2,stroka3, sig от тип низ;
var stroka2,stroka3, sig: низ;
След това създаваме манипулатора на събитие OnClick на новия бутон. Преди ключовата дума begin създаваме също 2 променливи от тип integer и една от тип string
var start2,start3:integer; URL: низ;
След това, между начало и край, пишем следния код:
URL:=WebBrowser1.LocationURL; start3:=Pos( 'secret%22%3A%22' ,URL); stroka3:=Копиране(URL, начало3+15, 900); Изтриване(stroka3, Pos( '%22%2C%22expire' ,stroka3) , 5900); Label1.caption:=stroka3;
http://vkontakte.ru/api/login_success.html#session=%7B%22 mid %22%3A63790444%2C%22 sid %22%3A%22756d0c7c91db66f66f82dba3cb5b67be6629d2295f878d9a70210836 %2 2%2C%22 тайната %22%3A%224c63d7e10d%22%2C%22 изтича
След това, използвайки стандартните функции за работа с низа Pos, Copy, Delete, получаваме стойността на секретната променлива от низа, записваме тази стойност в променливата Stroka3 и я извеждаме към компонента Label1. По принцип всичко е просто, основното тук е да не се объркате.
Това е всичко, разбрахме тайната на сесията, нека се опитаме да заменим всички параметри:
Беше: UserIDVKontakte api_ >IDApplication format=XMLmethod=getUserInfoExu >UserIDVKontakte v=3.0SecretSession
Стана: 63790444 api_ >1905253 format=XMLmethod=getUserInfoExu >63790444 v=3.0 stroka3
Тук, вместо 63790444, заменете вашия VKontakte ID, вместо 1905253, идентификатора на вашето приложение. Но това не е всичко, ние трябва да кодираме получения низ в MD5
За целта след ключовата дума uses добавяме нов модул към списъка, който се нарича /> След това нека създадем функция за кодиране в md5. Почти в коднай-отгоре намираме ключовата дума private, след която пишем:
функция md5(s: низ): низ;
След това натискаме клавишната комбинация Ctrl + Shift + C В резултат на това Delphi създава празно място за нашата бъдеща функция, която, както вероятно вече сте забелязали, се нарича MD5. Така че сега между начало и край в нашия файл ще напишем кода, който ще кодира нашия низ в md5:
Резултат := ''; с T /> опитайте Резултат := AnsiLowerCase(AsHex(HashValue(s))); накрая Безплатно; край;
Сега, по същия начин, ще вземем параметъра sid от там, за това добавяме следния код в края:
start2:=Pos( 'sid%22%3A%22' ,URL); stroka2:=Копиране(URL, начало2+12, 500); Изтриване (stroka2, Pos( '%22%2C%22secret' ,stroka2) , 5900);
Тук отново всичко е същото. Използвайки стандартните функции за работа с низа Pos, Copy, Delete, получаваме стойността на променливата sid от него, записваме тази стойност в променливата Stroka2
Мозъци още не са сварени?! Добре, още малко.
Хвърляме друг компонент Button на формата от раздела Standard и веднага създаваме манипулатор на събитие OnClick върху него, в който пишем следния код:
sig:= '63790444api_ >+stroka3; //заявка за подпис + секретна сесия sig:=md5(sig); // кодиране на подписа на заявката с помощта на предварително създадената функция Md5 WebBrowser1.Navigate( 'http://api.vkontakte.ru/api.php?api_ /> '&sig='+sig+'&u >);
* Навсякъде, естествено, вместо 63790444, заменете вашия VKontakte ID, вместо 1905253 id на вашето приложение.
И в началото на статията тази заявка изглеждаше така:
'http://api.vkontakte.ru/api.php? api_id=1905253& формат=XML& метод =getUserInfoEx'
След това добавихме параметъра sid към него и неговата стойност, която се съхранява в променливаред2. В резултат на това се оказа, че:
'http://api.vkontakte.ru/api.php? api_id=1905253& формат=XML& метод =getUserInfoEx&s
След това добавихме параметъра sig и неговата стойност, която се съхранява в променливата sig. В резултат на това се оказа:
'http://api.vkontakte.ru/api.php? api_id=1905253& формат=XML& метод =getUserInfoEx&s
И накрая, добавихме параметрите uids, които са равни на потребителския идентификатор на VKontakte и параметъра v, който е равен на версията на API на VKontakte, се оказа:
'http://api.vkontakte.ru/api.php? api_id=1905253& формат=XML& метод =getUserInfoEx&s /> sig='+sig+'&u >
Това е общо взето, стартираме проекта, натискаме първия бутон един по един, от самото начало, след като надписът login succes се появи в компонента на уеб браузъра, натискаме втория и след това третия бутон. В резултат на това резултатът от нашата заявка в XML формат беше показан в компонента WebBrowser. Просто трябва да вземете необходимите параметри от там и да ги използвате във вашата програма.