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. Просто трябва да вземете необходимите параметри от там и да ги използвате във вашата програма.