2016
22
Нояб

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

grigoriev
20134
vk api

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

Создание приложения вконтакте

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

vk api

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

vk api

В вкладке настройки мы видим поля с названием 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 и wap
  • scope - права доступа нашего приложения относительно данных пользователя. О правах поподробнее ниже.

Права приложения вк относительно заданного пользователя могут задаваться в текстовом и цифровом виде. В текстовом это будет выглядеть так 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

Вставляем данную ссылку в адресную строку браузера и переходим по ней. Нам открывается окно с подтверждением действия и заданными нами правами.

vk api

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

vk api

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

vk api

Теперь у нас всё готово для работы с апи вконтакте.

Примеры работы с 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 (ссылка есть в статье). Находите свой метод и внизу страницы с методом есть форма для теста данных метода. Посмотрите что получится там.

You have no rights to post comments

Используя данный сайт, вы даете согласие на использование файлов cookie, помогающих мне сделать его удобнее для вас. Уведомление о cookie