Социальные сети стали неотъемлемым инструментом продвижения сайтов. Для раскрутку сайта через соц. сети следует создать группу или страничку данного сайта. Набирать подписчиков, выкладывать новости на стену и много чего ещё (это тема отдельной заметки). Многие эти процессы можно автоматизировать используя API (интерфейс прикладного программирования) соответствующей социальной сети. В этой заметке я разберу как подключиться к vk api (вконтакте), как начать работать c вк апи, а так же приведу несколько примеров работы с api вконтакте.
И так приступим. Vk api имеет много методов, но одним из основных их различий является то, что для выполнения запросов к вк апи через некоторые методы требуется специальный ключ доступа - токен (access_token). Получить его можно создав своё приложение. Нам предлагают несколько видов приложений, но я выбираю тип Standalone. Мне его хватает. Для начала создания приложения переходим по ссылке и попадаем в следующее окно.
Здесь мы выбираем тип и название нашего приложения. Нажимаем подключить приложение и получаем на номер телефона, привязанному к аккаунту вк из которого мы создаём приложение, смс с кодом. Вводим его и переходим в следующее окно. В этом окне переходим в вкладку настройки.
В вкладке настройки мы видим поля с названием ID приложения и защитный ключ. Записываем куда нибудь эти данные. Больше ничего в вкладках я не делал. Состояние приложения оставил в положении отключено. Жмём сохранить настройки. Всё, мы создали приложение вконтакте.
Https://oauth.vk.com/authorize?client_id= &display=[вид окна] &redirect_uri=https://oauth.vk.com/blank.html&scope=[права приложения] &response_type=token&v=5.52
Права приложения вк относительно заданного пользователя могут задаваться в текстовом и цифровом виде. В текстовом это будет выглядеть так 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 вк я использую язык программирования 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->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 и автоматизировать свои действия в контакте.
Разработчикам довольно часто приходится сталкиваться с приложениями и сервисами, которые в процессе взаимодействия с социальной сетью Вконтакте, требуют ключ доступа — access_token.
В этой инструкции мы разберем два очень похожих метода, позволяющие получить его.
Все что от нас потребуется, подставить в URL адрес id приложения. Также доступно редактирования разделов, к которым мы разрешаем доступ через создаваемый access_token.
По сути, мы сформируем готовый урл, и подставим id двух разных приложений. В этом будет заключаться разница. После этого осуществим переход по готовой ссылке, и получит ключ доступа.
Вот готовый url адрес. Здесь нас, прежде всего, интересуют данные после знака =. В примере ниже там написано ID-Приложения . Мы, в свою очередь, подставим там конкретное число.
Https://oauth.vk.com/authorize?client_id=ID-приложения&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=https://api.vk.com/blank.html&display=page&response_type=token
Также обратите внимание на данные, после слова «scope» . Здесь мы перечисляем разделы, к которым ключ откроет доступ. Для того чтобы запретить приложения доступ к разделу с нашими друзьями, уберите из ссылки текст «friends» . Остальное по аналогии.
Теперь осталось только получить ID.
Для его создания, нам нужно перейти в соответствующий раздел, доступный в кабинете для разработчиков. Перейдите туда по ссылке.
Https://vk.com/apps?act=manage
И нажмите на кнопку «Создать приложение» .
Укажите название и тип приложения (см. ). Затем нажмите на кнопку «Подключить приложение» .
С недавнего времени, все операции в кабинете для разработчиков, нужно подтверждать через СМС. В открывшемся окне выберите пункт «Подтвердить через СМС» . Получите код на свой мобильный телефон, затем введите его в форму.
Приложение будет создано. Теперь перейдите на вкладку «Настройки» . Здесь в блоке , будет указан нужный нам набор цифр. Скопируйте его.
Теперь у нас есть все необходимое.
Второй способ получения айдишника — это просто взять готовое приложение. И лучше всего — официальное приложение Вконтакте для Android. Его ID — «2890984» . Можете использовать.
Https://oauth.vk.com/authorize?client_id=2890984&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=https://api.vk.com/blank.html&display=page&response_type=token
В браузере откроется страница, на которой указано уведомление о том, что не стоит предоставлять ключ доступа третьим лицам. А в адресной строке браузера — сформированный ключ. Он находится между значениями «access_token=» и «&expires_in» . Скопируйте его.
Ключ можно обновить, повторив описанные шаги. Воздержитесь от его распространения третьим лицам, а также от получения ключа, используя не надежные приложения и сервисы. Рассмотренный способ самый безопасный.
В данной статье для примера рассмотрено десктоп-приложение на Java, однако общие принципы и схема будут аналогичными для любого другого языка.
Авторизация ВКонтакте ничем не отличается от любой другой авторизации через сторонний сервер. Этот процесс отлично описал пользователь StackOverflow qnub :
Этот шаг самый простой. Нужно перейти на страницу ВК для разработчиков: https://vk.com/dev - и нажать на кнопку «Создать приложение». Тип указываем как «Standalone-приложение», имя, естественно, указываем произвольное. После этого в разделе «Мои приложения» появится (что бы вы думали?) ваше приложение. Смело нажимайте «редактировать», затем переходите в раздел «Настройки» - там первой же строкой вы увидите надпись «ID приложения: 1234567 ». Эти цифры - всё, что вам нужно запомнить для авторизации.
Заметьте, что нет никакого смысла скрывать ID приложения - он публично показывается, например, при отправке сообщения на стену через это приложение. Ни токены, ни любую другую информацию украсть, используя ID, нельзя. В общем-то, вы можете использовать даже ID моего приложения (если вам нужно написать небольшой скрипт для себя).
Далее вам нужно направить пользователя по специально сформированному адресу (её упоминания выделены жирным цветом в первом разделе статьи), где он подтвердит, что хочет разрешить вашему приложению выполнять какие-то действия со своим аккаунтом. Как же формируется эта ссылка?
Этот процесс подробно описан в документации . Однако, если вы обратились к этой статье, я предполагаю, что вам не хватило информации в документации, и поэтому перескажу всё своими словами. Ссылка имеет следующий вид: хост?параметры. Параметры имеют вид нескольких пар вида ключ=значение разделённых символами & .
Хост всегда остаётся неизменным: https://oauth.vk.com/authorize . Набор параметров так же неизменен:
https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=http://example.com/callback&scope=friends&response_type=token&v=5.59
http://REDIRECT_URI#access_token=TOKEN 3&expires_in=TIME &user_id=ID
Нас интересует TOKEN . Как же направить пользователя на страницу из Java-приложения и как получить адрес страницы, на которую его перенаправит ВК (чтобы извлечь из неё токен)? Существует два способа.
Если вы решили пойти по этому пути, то вы просто открываете браузер системы по умолчанию с полученной выше ссылкой, а пользователю каким-то образом сообщаете, что он должен скопировать из URL токен и вставить его в какое-то поле. Понятно, что у этого метода отвратительный UX, однако его можно реализовать легко и быстро. Вполне подойдёт, если вы пишете приложение для себя - чтобы скачать музыку или получать уведомления. Реализуется он следующим образом:
Public String askToken(String link) throws IOException, URISyntaxException{ //Opens link in default browser Desktop.getDesktop().browse(new URI(link)); //Asks user to input token from browser manually return JOptionPane.showInputDialog("Please input access_token param from browser: "); }
Если вы решили пойти по этому пути, то вам потребуется использовать какую-либо стороннюю GUI-библиотеку (или по крайней мере JavaFX), у которой в арсенале есть свой компонент браузера. Над таким бразуером ваша программа будет иметь полную власть, и вы сможете извлечь адрес, на который вас перенаправил ВК, программными средствами. На JavaFX это можно реализовать следующим образом:
Import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class Main extends Application{
public static final String REDIRECT_URL = "https://oauth.vk.com/blank.html";
public static final String VK_AUTH_URL = ""; //TODO!!!
public static String tokenUrl;
public static void main(String args){
System.out.println(Main.getTokenUrl());
}
public static String getTokenUrl(){
launch(Main.class);
return tokenUrl;
}
@Override
public void start(Stage primaryStage) throws Exception {
final WebView view = new WebView();
final WebEngine engine = view.getEngine();
engine.load(VK_AUTH_URL);
primaryStage.setScene(new Scene(view));
primaryStage.show();
engine.locationProperty().addListener(new ChangeListener
Таким образом, мы научились получать access token ВКонтакте, с помощью которого можно вызывать методы API. Если эта статья вызовет у сообщества интерес, в следующей статье я опишу, как вызывать те или иные API-методы с помощью токена, как проверять токен на валидность (метод secure.checkToken() , конечно), и напишу какое-нибудь демонстрационное приложение, например, для сохранения всей музыки из плейлиста на компьютер. Кстати, не стоит забывать, что на самом деле всё придумано до нас, и уже есть библиотеки для работы с VK API почти для любого языка. У нас есть , в которой мы постарались собрать лучшие из них.
Если есть какие-то идеи или вопросы - добро пожаловать в комментарии (я их читаю и всем отвечаю). Так же вопросы можно задать
Всё чаще и чаще на рынке появляются программные продукты для ВКонтакте в виде онлайн-сервисов, мобильных или компьютерных приложений и даже скриптов, для работы которых требуется авторизация аккаунта через access_token. В ряде случаев, эти программы или сервисы сами дают возможность в пару кликов получить требуемый для авторизации ключ доступа. Но как быть, если вы скачали скрипт, а ключа access_token для его работы у вас нет?
Способ получения токена заключается в переходе по специальной ссылке, содержащей ID некоторого приложения ВКонтакте, вида:
Цитата
200?"200px":""+(this.scrollHeight+5)+"px");">https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ &scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Такой метод получения токена подразумевает, что у вас есть собственное приложение. В таком случае, пропустите пару шагов. Мы же будем отталкиваться от факта, что своего приложения у вас нет, а значит вам нужно его создать. Для этого необходимо перейти на страницу управления своими приложениями по ссылке vk.com/apps?act=manage и нажать на кнопку «Создать приложение ».
200?"200px":""+(this.scrollHeight+5)+"px");">https://oauth.vk.com/authorize?client_id=5563738&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Этот метод абсолютно идентичен предыдущему за исключением того, что вы не создаёте собственное приложение, а используете уже созданное, официальное приложение ВКонтакте, которому можно доверять.
В качестве примера мы возьмём приложение ВКонтакте для Android. Его ID следующий: 2890984 . В итоге, подставляя его в ссылку, она примет следующий вид:
200?"200px":""+(this.scrollHeight+5)+"px");">https://oauth.vk.com/authorize?client_id=2890984&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Что такое токен вк? В наше время технологии развиваются с очень быстрым темпом. Одновременно с ними и социальные сети набирают огромные обороты. Не иметь аккаунта хотя бы в одной из соцсетей – уже невозможно для каждого человека, по крайней мере среди молодых людей и девушек. Ежедневно они пополняются терабайтами фотографий, видео и даже примитивной единицы знаний текста.
Но к сожалению об особых «фишках» этого ресурса знают немногие. Кто-то действительно проводит там мало времени, кому-то они попросту не представляют необходимости.
Одной из таких примечательностей является так называемый «токен» в этой соцсети, мало юзеров знает о том что такое токен вк.
Токен вк – это длинная строка, состоящая из символов: цифр и букв латинского алфавита . Казалось бы, ничего особенного в ней нет, но она дает большие возможности пользователю, который ее активировал.
Например, писать определенные сообщения определенному человеку, отображать вечный онлайн вашей страницы, будто бы вы всегда сидите на сайте. Последний вариант дает большой плюс, ведь недавно невидимку в контакте убрали и с помощью токена никто не сможет понять когда именно вы были онлайн, ведь он отображается постоянно. Ставить статус, писать на стене и тд
Процесс получения токена проводится через приложение. Его вам нужно создать самим, это можно сделать перейдя по ссылке vk.com/apps?act=manage и нажав кнопку создания. В название вписываем все, что вам угодно. Тип выбираем самый первый. Далее проходим подтверждение с помощью мобильного телефона.
Выходит страница вашего приложения, выбираете «Настройки» и там будет длинный набор звездочек и сверху от него айди.
https://oauth.vk.com/authorize?client_id=5563738&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Выполнив все вышеописанное, вам вылезет окошко, там вы соглашаетесь со всем и нажимаете кнопку «Разрешить».
Кажется сложно, но на самом деле получить токен в вк может каждый, другой вопрос зачем? 99% пользователям вк, его знание абсолютно не нужно. Так же спешим вас предостеречь не давайте и не вписывайте свой токен на сомнительных ресурсах иначе ваше страница может оказаться в руках злоумышленника. Так например вас могут подписать на различные группы или сообщества без вашего ведома, поставить вам сомнительный статус или опубликовать от вашего имени сообщение на вашей стене