Нояб
Подключение и работа с vk api

Социальные сети стали неотъемлемым инструментом продвижения сайтов. Для раскрутку сайта через соц. сети следует создать группу или страничку данного сайта. Набирать подписчиков, выкладывать новости на стену и много чего ещё (это тема отдельной заметки). Многие эти процессы можно автоматизировать используя API (интерфейс прикладного программирования) соответствующей социальной сети. В этой заметке я разберу как подключиться к vk api (вконтакте), как начать работать c вк апи, а так же приведу несколько примеров работы с api вконтакте.
Создание приложения вконтакте
И так приступим. Vk api имеет много методов, но одним из основных их различий является то, что для выполнения запросов к вк апи через некоторые методы требуется специальный ключ доступа - токен (access_token). Получить его можно создав своё приложение. Нам предлагают несколько видов приложений, но я выбираю тип Standalone. Мне его хватает. Для начала создания приложения переходим по ссылке и попадаем в следующее окно.

Здесь мы выбираем тип и название нашего приложения. Нажимаем подключить приложение и получаем на номер телефона, привязанному к аккаунту вк из которого мы создаём приложение, смс с кодом. Вводим его и переходим в следующее окно. В этом окне переходим в вкладку настройки.

В вкладке настройки мы видим поля с названием ID приложения и защитный ключ. Записываем куда нибудь эти данные. Больше ничего в вкладках я не делал. Состояние приложения оставил в положении отключено. Жмём сохранить настройки. Всё, мы создали приложение вконтакте.
Получение токена (access_token) api вк
Что бы получить токен нам нужно создать ссылку определённого типа. С помощью этой ссылки мы отправим запрос серверу вк апи, в ответе сервера мы получим нужный нам токен (access_token). Синтаксис построения ссылки.
https://oauth.vk.com/authorize?client_id=[ID приложения]&display=[вид окна]&redirect_uri=https://oauth.vk.com/blank.html&scope=[права приложения]&response_type=token&v=5.52
где:
client_id
- ID нашего приложения, полученный раньше.display
- вид окна, в котором будет происходить авторизация. Может быть page, popup, touch и wapscope
- права доступа нашего приложения относительно данных пользователя. О правах поподробнее ниже.
Права приложения вк относительно заданного пользователя могут задаваться в текстовом и цифровом виде. В текстовом это будет выглядеть так
scope=friends,messages,groups
. Этой строкой кода мы разрешили приложению vk доступ к друзьям, сообщениям и группам пользователя. Так же
права задаются и в цифровом виде. Для каждого правила есть битовая маска и сумма этих масок и будет разрешать приложению определённые действия. Например
право friends(+2), messages(+4096), groups(+262144), в итоге сумма битовых масок будет 266242 и код scope=266242
будет аналогом scope=friends,messages,groups
. Отдельное внимание хочу уделить праву offline
. Установка этого права делает получаемый нами
токен бесконечным. Если это право не задать через определённое время токен нужно будет получать снова. Подробнее о правах приложения вк можно почитать
здесь.
В итоге давайте составим адрес для получения токена приложению с правами доступа к друзьям, сообщениям и
группам пользователя, а так же с бессмертным токеном. Id приложения пусть будет 123456. Данный адрес будет выглядеть так:
https://oauth.vk.com/authorize?client_id=123456&display=page&redirect_uri=https://oauth.vk.com/blank.html&
scope=friends,messages,groups,offline&response_type=token&v=5.52
Вставляем данную ссылку в адресную строку браузера и переходим по ней. Нам открывается окно с подтверждением действия и заданными нами правами.

Подтверждаем действие и попадаем на страницу с предупреждением, из адресной строки браузера берём наш полученный токен. Это будет после #access_token=
,
код expires_in=0
говорит нам что токена (access_token) api вк бессмертный. Соответственно user_id=
это id пользователя, для которого
мы получили токен.

Зайдём в настройки аккаунта во вкладку настройки приложений и увидим наше приложение.

Теперь у нас всё готово для работы с апи вконтакте.
Примеры работы с api vk
Для работы с api вк я использую язык программирования php. Поэтому и примеры я буду приводить на php. Для того, что бы выполнить какое либо действие, нам нужно послать запрос к api vk. Запрос мы можем послать и через адресную строку браузера. Тоесть запрос это есть определённый урл адрес с заданными в нём определёнными параметрами. Синтаксис составления такого урл описан ниже.
https://api.vkontakte.ru/
method/[ВЫЗЫВАЕМЫЙ МЕТОД]?[ПАРАМЕТРЫ ВЫЗЫВАЕМОГО МЕТОДА]
Список методов api vk находится
здесь
.Больше пока заострять на этом внимания не будем, потом на реальных примерах
всё станет ясно. Осталось только разобраться как запрос к апи вконтакте отправить средствами php. Для этого будем использовать php функцию file_get_contents
, а так же
функцию json_decode
так как ответ от сервера мы получим в формате json. Вот шаблон выполнения запроса к вк на php.
$result=json_decode(file_get_contents('https://api.vkontakte.ru/ method/[ВЫЗЫВАЕМЫЙ МЕТОД]?[ПАРАМЕТРЫ ВЫЗЫВАЕМОГО МЕТОДА]'));
ну а теперь несколько примеров работы с апи vk
$userid=12345; $mytoken=56789; /*вернёт объект с значениями пола и дня рождения пользователя*/ $request_params = array( 'user_id' => $userid, 'fields' => 'sex', 'fields' => 'bdate' ); $get_params = http_build_query($request_params); $result = json_decode(file_get_contents('https://api.vk.com/method/users.get?'. $get_params)); /*проверка пользователя на бан вк*/ $request_params = array( 'user_id' => $user_id, 'fields' => 'deactivated' ); $get_params = http_build_query($request_params); $result = json_decode(file_get_contents('https://api.vk.com/method/users.get?'. $get_params)); if(isset($result->response[0]->deactivated)){ echo "Страница заморожена или удалена"; } /*отправим сообщение пользователю с user_id=222222*/ $mesage='Привет, как дела?'; //кодируем строку $msg=urlencode($mesage); $result = json_decode(file_get_contents('https://api.vkontakte.ru/method/ messages.send?user_id=222222& message='.$msg.'&access_token='.$mytoken)); /*приглосим в друзья пользователя с user_id=222222*/ $mesage='Давайте дружить'; $msg=urlencode($mesage); $result=json_decode(file_get_contents('https://api.vkontakte.ru/ method/friends.adduser_id=222222& text='.$msg.'&access_token='.$mytoken));
Методов у апи много, так что советую читать документацию. Конечно запросы не всегда выполняются правильно и возвращают коды ошибок. Ошибки можно посмотреть здесь . Так что вот так вот просто можно подключиться к api vk и автоматизировать свои действия в контакте.
Комментарии
Надежда
23.11.2017 18:03 Ответить
Подскажите пожалуйста, а в случае попытки выгрузки данных через запрос в адресной строке, что может быть не так с данным запросом https://api.vk.com/method/photos.search.xml?lat=55.649030&lng=37.528782&count=100&radius=500 , что по нему вылезают какие то рекламы фкофт в фото, присем даже если другие координаты берешь ( даже вот к примеру Дворцовую площадь)?
Алексей Григорьев
23.11.2017 18:11 Ответить
Надежда извините я наверно не смогу вам помочь. Я с методом photos.search не работал, так что как должно быть не знаю. Могу только посоветовать потестить данный метод в отладчике вк. Идете в список методов api vk (ссылка есть в статье). Находите свой метод и внизу страницы с методом есть форма для теста данных метода. Посмотрите что получится там.