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 добавяме нов модул към списъка, който се нарича IdHashMessageDigest След това ще създадем функция закодиране в md5. В кода, почти най-отгоре, намираме ключовата дума private, след която пишем:

функция md5(s: низ): низ;

След това натискаме клавишната комбинация Ctrl+Shift+C В резултат на товаDelphi създава празно място за нашата бъдеща функция, която, както вероятно вече сте забелязали, се нарича MD5. Така че сега между начало и край в нашия файл ще напишем кода, който ще кодира нашия низ в md5:

Резултат := ''; с TIdHashMessageDigest5.Create направете опитайте Резултат := 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 и неговата стойност, която се съхранява в променливата stroka2. В резултат на това се оказа, че:

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

P.S. Искате ли да изпреварите всички останали посетители на сайта с най-новите видео уроци, аудио подкасти, статии за Delphi. Участвайте в състезания и постепенно се присъединете към нашия екип?! Тогава точно сега се абонирайте за безплатния мултимедиен пощенски списък на сайта delphiexpert.ru Вече имаме повече от 5500 души! Абонирай се

Е, ако търсите къде да купите Explay Infinity, тогава се свържете с този онлайн магазин.