Алгоритм обращения программы к API VK

Часто бывает мы хотим автоматизировать то или иное действие. Порой спешка или просто лень не дает нам возможности ознакомиться со всей документацией(по API VK).
Разработать программу для работы с API ВКонтакте проще чем кажется. Подойдет любой язык, умеющий отправлять http get запросы (соответственно получать ответ). Например: Delphi, shell, C, Perl, PHP, Python и т. п.



Итак, разберем алгоритм создания программы и интеграции её с ВКонтакте.
Первое что нам нужно сделать, это создать(зарегистрировать) Desktop-приложение.
Нажимаем на кнопку «Подключить сайт» в разделе «Разработчикам»
Вводим название и выбираем тип — Standalone-приложение.



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



Авторизация приложения с ВКонтакте происходит на базе протокола OAuth 2.0 и состоит из 3х шагов:

Открытие окна браузера для аутентификации пользователя на сайте Вконтакте.
Пользователь разрешает доступ приложению к запрашиваемым правам.
Вконтакте возвращает приложению access_token для доступа к API.
_http://api.vk.com/oauth/authorize?client_id=##ID##&redirect_uri=http://api.vk.com/blank.html&scope=##ПРАВА##&display=##ОТОБРАЖЕНИЕ## &response_type=token

, где:
##ID##- Id вашего приложения, полученного ранее;
##ОТОБРАЖЕНИЕ## — внешний вид окна авторизации(page, popup, touch и wap).
##ПРАВА##- список прав доступа приложения к данным пользователя. Указываются через запятую(notify,friends,photos,audio,video,docs,notes,pages,wall,groups,messages,ads) либо в цифровом виде, суммируя необходимые права (1,2,4,8,16,32,64,...,262144).
Пример: Получить права на Доступ к друзьям и Доступ к фотографиям пользователя:
2 + 4 = 6; scope=1026 либо scope=friends,photos
Подробнее о правах доступа можно почитать здесь и здесь.



В ответ на запрос, сервер вернет:
access_token=93f22a20ddf1174f939108d43e936cd6bb193469344639c2d1c268f3f65fa86 &expires_in=86400&user_id=11347652

, где access_token — необходимый нам параметр, для отправки последующий запросов к API Вконтакте;
expires_in — время жизни token, после истечения необходимо обновить
( UPD: если в правах указать «offline» или 999999, то токен будет бесконечным);
user_id — id пользователя.
Связь программа-приложение-пользователь установлена. Теперь мы можем отправлять любые запросы к Api(в мерах разрешенных пользователем).
Синтаксис запросов:
_https://api.vkontakte.ru/method/##МЕТОД##?##НАЗВАНИЕ_ПЕРЕМЕННОЙ##=##ЗНАЧЕНИЕ_ПЕРЕМЕННОЙ## &access_token=##ТОКЕН,ПОЛУЧЕНЫЙ_РАНЕЕ##

Список методов и их описание можно посмотреть здесь и здесь.

Для примера рассмотрим метод отправления личного сообщения

Название метода: messages.send
Необходимое право: 4096
Параметры: uid — id пользователя, которому отправляется сообщение, является обязательным.
message — текст сообщения, является обязательным, если не указан attachment.
attachment — приложения к сообщению, указанные через запятую в формате
<тип><владалец>_<idмедиа> (Пример:photo100172_166443618).
title — Заголовок.
type — 0 (по умолчанию)- обычное, 1 — из чата.

Пример запроса отправки сообщения пользователю id66392446:
_https://api.vkontakte.ru/method/messages.send?uid=66392446&message=ХабраХабр&title=Заголовок&access_token= 93f22a20ddf1174f939108d43e936cd6bb193469344639c2d1c268f3f65fa86

В ответ получим ID сообщения или код ошибки.
{"response":10847}

В качестве примера программы привожу свой php-сценарий автоматического обновления статуса Вконтакте

(До нового года осталось… дней + Случайная фраза из файла).

Создаем php файл, который будет отправлять статус:
pub.php
<?php
$token='93f22a20ddf1174f939108d43e936cd6bb193469344639c2d1c268f3f65fa86';апишем токен, полученный ранее
$day = '15';
$month = '11';
//Дата, до которой будем отсчитывать время
$year = '2011';
function dateDiff($startDay, $endDay) {
$endDay = strtotime($endDay);
$startDay= strtotime($startDay);
 
$difference = abs($endDay - $startDay);
$return['days'] = floor($difference / 86400);
$return['hours'] = floor($difference / 3600) % 24;
$return['minutes'] = floor($difference / 60) % 60;
 
return $return;
}
 
$date=dateDiff(date("j-n-Y G:i"),'19-11-2011 9:00');
 
$phrases = "/var/www/public/1.txt";//файл содержащий фразы
$z = file ($phrases);
$cz = count ($z) -1;
$r = rand (0, $cz);
//случайная фраза из файла
 
$text="Осталось $date[days] дней, $date[hours] часов.$z[$r]";
 
$sRequest = "https://api.vkontakte.ru/method/status.set?text=$text&access_token=$token";
echo $text;
// ответ от Вконтакте
$oResponce = json_decode(file_get_contents($sRequest));

Теперь добавляем pub.php в cron с обновлением, не чаще чем раз в минуту, и наблюдаем результат.



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

UPD: перед отправкой текстовую строку необходимо кодировать $text=urlencode($text);
Теги:
API VK
Добавлено: 16 Августа 2013 09:58:11 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...