Delphi. API ВКонтакте

Совсем недавно ВКонтакте разрешила Desktop-приложениям получать все необходимые права, чтобы полноценно работать с соц. сетью методами API. Фактически это было сделано, дабы дать возможность создать клиент для общения, который бы использовал не XMPP (Jabber), а только лишь API.

Здесь я покажу, как можно легко и просто создать своё Desktop-приложение и пользоваться всеми благами API ВКонтакте.
Для начала нужно указать ВК, что мы создали своё приложение и хотим им пользоваться. Для этого переходим на страницу добавления приложений и жмем на «Создать приложение».

Дальше вводим название, выбираем «Desktop-приложение» и жмем «Перейти к загрузке приложения».

Теперь в настройках приложения можно увидеть его ID. Это главное, что нам нужно для работы.

Теперь переходим к написанию программы. Я уже подготовил готовный исходник, в котором прописан ID моего приложения (можете пользоваться им или вписать свой).

Итак, в самом начале новому пользователю приложения необходимо добавить его в свои приложения и дать ему необходимые права (это достаточно сделать один раз для конкретного пользователя). Для этого вводим ЛогинПароль и с помощью компонента TWebBrowser переходим на страницу

http://vkontakte.ru/login.php?app=ID_вашего_приложения&layout=popup&type=browser&settings=15615

И добавляем приложения, а также даем ему все необходимые права.
Параметр settings здесь показывает, какие права запросит приложение при добавлении. Для получения всех возможных прав нужно выставить значение параметра 15615.

После добавления приложения мы может авторизоваться им.

После успешной авторизации ВК выдаст:
— mid — равен ID пользователя
— sid — идентификатор сессии
— secret — специально сгенерированный секрет сессии
Эти параметры пригодятся при использовании методов.

В данной программе можно воспользоваться четырьмя методами API. Первый из них — friends.get. Позволяет получить список друзей пользователя. И список сразу же будет парситься и записываться вListView.

На примере этого метода покажу, как делать запрос. Для начала нужно высчитать подпись запроса(sig). Она представляет собой md5 следующей строки:

значение_midapi_id=ID_приложенияfields=поля_анкет_которые_хотите_получить_(sex, bdate и т.д.)format=XMLmethod=название_метода_(friends.get)v=3.0значение_secret

Здесь нужно обратить внимание, что все параметры, что находятся между значение_mid изначение_secret должны располагаться по алфавиту, т.е.:
— api_id=
— fields=
— format=
— method=
— v=

После этого сам запрос:

http://api.vkontakte.ru/api.php?api_id=ID_приложения&format=XML&method=название_метода_(friends.get)&sid=значение_sid&sig=значение_sid&v=3.0&fields=поля_анкет_которые_хотите_получить_(sex, bdate и т.д.)

В ответ сервер выдаст результат в формате XML со списком ID друзей и полями анкет, которые запросили. Остается лишь спарсить всё это.

Вторым методом является getProfiles. Получает информацию о пользователе по его ID и вписывает ее в соответствующие поля.

При клике на пользователе в списке ListView программа делает еще два запроса: getCities (получает название города по его ID) и getCountries (получает название страны по ее ID). А также запрашивается фото пользователя, которое выводится на форму (если такового нет, то выводится изображение из файла).

А тут можно почитать про авторизацию ВКонтакте.

Добавить комментарий