Delphi взаимодействие с Вконтакте (vkontakte) API
В этом уроке я хочу рассказать вам как из своего приложения Delphi легко взаимодействовать с сайтом vkontakte.ru используя при этом API vkontakte. Не знаю, являетесь ли вы пользователем данной социальной сети, но в связи с её большой популярностью, думаю, что многим данный урок пригодиться.
Сразу хочу сказать, что здесь мы не будем писать МЕГА крутое приложение. В уроке показан лишь способы взаимодействия Desktop приложения на Delphi и Vkontakte API, поняв который вы самостоятельно сможете доработать имеющийся исходник.
Итак, поехали. Первым делом заходим вконтакт под своим аккаунтом. Далее переходим вот по этой ссылке: http://vkontakte.ru/pages.php?act=developers
На открывшейся странице в правом верхнем углу нажимаем на кнопку "Создать приложение",
после чего заполняем необходимые поля.
- Название - выставляем любое на ваш вкус,
- Тип - Desktop-приложение.
- Категория - прочее.
- После того как все заполнили, нажимаем на кнопку "перейти к загрузке приложения".
Поздравляю, малую часть от общей работы вы сделали, далее в правом верхнем углу нажимаем на кнопку "Настройки" и на следующей странице вы увидите id своего приложения у меня это 1905253. Запомните его, в дальнейшем он нам пригодиться !
Ну а сейчас открываем Delphi и создаем новый проект, на форму кидаем компоненты Button, Edit с закладки standard и компонент WebBrowser с закладки Internet, в принципе если хорошенько подумать можно обойтись и без компонента WebBrowser, но если честно не хочу сейчас ломать себе голову)), возможно, вы найдете решение обходиться без него. Тем более нужен он нам только в самом начале для того, что бы Войти и получить сессию, дальше можно будет обходиться компонентом idhttp.
Ну что ж мы продолжаем, подробнее об авторизации Desktop приложений вы можете прочитать тут
Коротко скажу, что нам необходимо послать POST или GET запрос на адрес: http://vkontakte.ru/login.php и передать в нем несколько обязательных параметров, а именно:
- app - ID вашего приложения (тот что я говорил вам запомнить)
- layout - Указывает тип дизайна страницы авторизации, в нашем случае значение этого параметра будет равно popup так как мы создаем приложение, которое будет запускаться на обычных компьютерах, ноутбуках. Если в значение этого параметра подставить touch, то это будет говорить о том, что приложение, запускается на коммуникаторах, смартфонах и iPhone.
- Парметр type - который указывает каким образом передается значение сессии, выбирать здесь нам особе не из чего т.к. на момент написания статьи данный параметр может принимать только одно значение, browser.
Так с параметрами мы вроде разобрались, а сейчас создадим запрос к странице http://vkontakte.ru/login.php. Для этого создаем, обработчик событий OnClick на нашей кнопке, между begin end вставляем следующий код:
WebBrowser1.Navigate('http://vkontakte.ru/login.php?app=1905253&layout=popup&type=browser');
Тут мы при помощи события Navigate говорим компоненту WebBrowser1 перейти на страницу, http://vkontakte.ru/login.php т.е. делаем POST запрос, плюс в нем же передаем необходимые параметры:
- app=1905253– тут вместо (1905253) необходимо подставить id вашего приложения,
- layout=popup,
- type=browser
о всех этих параметрах я писал выше, поэтому повторяться не буду. Единственное скажу, что между параметрами ставиться разделяющий символ &
Итак, после этого, в случае успешной авторизации браузер будет перенаправлен на страницу http://vkontakte.ru/api/login_success.html и в якорной ссылке будет передана информация о сессии в формате JSON. (подробнее расскажу об этом чуть позже), а если мы что-нибудь накосячели с авторизацией, браузер будет перенаправлен на страницу http://vkontakte.ru/api/login_failure.html
Допустим что у нас все прошло гладко и без косяков, нас переадресовывают на http://vkontakte.ru/api/login_success.html Хотя полностью адрес будет выглядеть примерно так:
http://vkontakte.ru/api/login_success.html#session=%7B%22mid%22%3A63790444%2C%22
sid%22%3A%22756d0c7c91db66f66f82dba3cb5b67be6629d2295f878d9a70210836%22%2C%22
secret%22%3A%224c63d7e10d%22%2C%22expire%22%3A1279018989%2C%22
sig%22%3A%228a5ea3f9ee8c57781782d402d6eea5ed%22%7D
* Для проверки можно вставить строку http://vkontakte.ru/login.php?app=1905253&layout=popup&type=browser в адресную строку вашего браузера (Firefox, InternetExplorer, Opera и.т.п)
т.е. здесь все, что идет после login_success.html является информацией о сессии, где в session записаны параметры сессии в формате JSON. (для удобство я выделил каждый параметр жирным)
Теперь поясню значение каждого параметра:
- mid в нем хранится ID пользователя в ВКонтакте в моем случае он равен 63790444, у вас будет подругому.
- sid в нем хранится Идентификатор сессии, который при каждом новом подключении будет разный, в моем случае он равен
756d0c7c91db66f66f82dba3cb5b67be6629d2295f878d9a70210836 у вас естественно он будет другой. - secret хранит в себе Специально сгенерированный секрет сессии, в моем случае он равен 4c63d7e10d
- expire в нем хранится время истечения сессии в формате UNIX, в моем случае равен 1279018989
Все эти параметры пригодяться нам для дальнейшей работы, поэтому если вам что то не понятно советую вниманительно почитать тут
Авторизацию мы прошли, что же дальше ???
Скажу вам честно, что дальше можно делать ПРАКТИЧЕСКИ все что угодно ). Просматривать информацию о пользователях, ставить сообщения в очередь, сохраняет запись на стене пользователя, получать список аудиозаписей пользователя и многое, многое другое. Полный список всех методов вы можете посмотреть тут
Ну а мы начнем, пожалуй, с самого простого метода: getUserInfoEx - который возвращает расширенную информацию о текущем пользователе. Для этого мы должны передать серверу 5 обязательных параметров это:
- api_id - идентификатор приложения, присваивается при создании, у меня это 1905253. У вас естественно свой.
- sig - подпись запроса, о том, откуда брать этот параметр я расскажу чуть позже.
- sid - идентификатор сессии, полученный ранее при авторизации.
- method - название метода API из общего списка
- v - версия API.
- format - это не обязательный параметр, но в нашем случае мы будем его использовать. Определяет формат возвращаемых данных – XML или JSON
Сразу стоит отметить, что сейчас (после получения сессии) все свои запросы мы должны посылать по адресу: http://api.vkontakte.ru/api.php с указанием необходимых, вышеперечисленных параметров.
Ну что ж попробуем сформировать такой запрос. Изначально имеем строку http://api.vkontakte.ru/api.php, как было сказано выше, нам необходимо в качестве параметра передать идентификатор приложения, т.е. api_id
В результате получаем:
http://api.vkontakte.ru/api.php?api_id=1905253
Усложняем наш запрос указываем формат передаваемых данных, в результате получаем:
http://api.vkontakte.ru/api.php?api_id=1905253&format=XML
Двигаемся дальше указываем API метод который будем использовать в нашем случае getUserInfoEx, получаем:
http://api.vkontakte.ru/api.php?api_id=1905253&format=XML&method=getUserInfoEx
Далее, нам необходимо добавить в запрос параметры sig и sid откуда их брать и как рассчитывать я расскажу в следующей части, а на этом пока все. Возможно скоро будет урок о том Как понизить друга в рейтинге в друзьях Вконтакте и как скрыть статус онлайн
Продолжение следует...
P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
Участвовать в конкурсах и постепенно вливаться в нашу команду ?!
Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
Нас уже больше чем 5500 человек ! Подписаться
Похожие материалы
- Delphi работа с API Вконтакте (vkontakte) часть 2
- Delphi исходники - игра Морской бой
- Погружение в Indy, редкая книга delphi
- htmlhelp - Дополнение
- ASPack - Компрессор исполняемых файлов
Последние из рубрики
- Delphi видео урок - Rave простой способ печати
- Видео урок ini файлы в Delphi
- Видео урок - Rave Report и Delphi печатаем таблицы