Как получить access_token вконтакте

ВК-API блиц

ВК предоставляет несколько реализаций API:

  • Streaming/Long Poll — позволяет получить данные в реальном времени. Сразу же, при обновлении данных в ВК, мы получаем актуальную информацию, без обновления страницы. Streaming и Long Poll реализуют разные подходы, но суть их одинаковая.
  • Виджеты для сайта — здесь всё просто: скопировал код, без хитрых настроек, и у тебя рабочий виджет на сайте.
  • Open API — работает на клиенте. Так же просто настраивается и используется. Преимуществом является то, что не обязательно иметь сервер для выполнения запросов. Будет работать в обычном HTML + JS.
  • Callback API — позволяет получать данные от самомого ВК, не выполняя запрос. В случае обновления данных, ВК сам нам присылает новые данные. Например, пользователь подписался на нашу группу, и ВК, автоматически пришлёт информацию об этом пользователе нашему скрипту.
  • REST API — позволяет взаимодействовать с данными ВК из скрипта. Позволяет автоматизировать любые пользовательские действия.

Для нас, как для программистов, на данном этапе — интересен REST API. Который позволяет взаимодействовать с пользователями, группами, рекламой, и прочими сущностями. Подробнее, обо всех доступных методах можно почитать здесь.

Для получение доступа к REST API, необходимо иметь специальный ключ . Это уникальное значение, аналогично логину и паролю — идентифицирует пользователя, от имени которого выполняются запросы.

Что такое ОAuth2.0?

черновикаRFC 6749

  • Вместо привычных логина и пароля, которые имеют определенный набор прав и время жизни, мы получаем доступ к ресурсам с помощью случайно сгенерированных строк — токенов.
  • Можно выдавать права максимально точечно, опираясь на собственные пожелания, а не на заранее определённый набор прав.

Роли

  • Resource owner — сущность, которая имеет права доступа на защищённый ресурс. Сущность может быть конечным пользователем или какой-либо системой. Защищённый ресурс — это HTTP endpoint, которым может быть что угодно: API endpoint, файл на CDN, web-сервис.
  • Resource server — сервер, на котором хранится защищённый ресурс, к которому имеет доступ resource owner.
  • Client. Это приложение, которое запрашивает доступ к защищённому ресурсу от имени resource owner и с его разрешения — с авторизацией. 
  • Authorization server — сервер, который выдаёт клиенту токен для доступа к защищённому ресурсу, после успешной авторизации resource owner.

Регистрация клиента

фантазииRedirection URIClient type

  • Confidential — клиент, который может безопасно хранить свои учётные данные. Например, к такому типу клиентов относят web-приложения, имеющие backend.
  • Public — не может безопасно хранить свои учётные данные. Этот клиент работает на устройстве владельца ресурса, например, это браузерные или мобильные приложения.

Абстрактный OAuth 2.0. Flow c применением Access token

  • Client отправляет запрос на доступ к требуемому ресурсу resource owner.
  • Resource owner передаёт обратно клиенту authorization grant, который подтверждает личность resource owner и его права на ресурс, доступ к которому запрашивает client. В зависимости от flow это может быть токен или учётные данные.
  • Client отправляет authorization grant, полученный в предыдущем шаге authorization server, ожидая от него Access token для доступа к защищённому ресурсу. 
  • authorization server убеждается в валидности authorization grant, после чего отсылает access token клиенту в ответ.
  • Получив access token, клиент запрашивает защищённый ресурс у resource server. 
  • Resource server убеждается в корректности access token, после чего предоставляет доступ к защищённому ресурсу.

Абстрактный OAuth 2.0. Flow c применением Refresh token

  • Client приходит c authorization grant к authorization server и просит предоставить ему access token и refresh token.
  • Authorization server убеждается, что с authorization grant всё нормально и возвращает клиенту запрошенные access token и refresh token.
  • Client с access token запрашивает защищённый ресурс, пока не получит первую ошибку доступа к ресурсу — invalid token error.
  • После получения ошибки доступа, клиент идет к authorization server с refresh token и просит заменить просроченный access token на новый. 
  • В ответ клиент получает новый access token, а также новый refresh token, либо продлевается время жизни старого refresh token. 

Примеры работы с 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->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.

Некоторые сервисы предосталвяют возможности получить ключ доступа, который необходим для авторизации. На это уходит несколько секунд. Но как быть, если вы загрузили скрипт, но необходимого access_token ключа нет?

Краткая инструкция для получения токена сообщества

Заходим в настройки сообщества. (если у вас нет сообщества, значит его ):

1.
Работа с Api > 2.
Получить ключ > 3.
Скопируйте его (это ключ (токен) и есть access_token сообщества)

Вот и всё. А если же вам нужен токен пользователя, тогда вся необходимая информация находится ниже в статье.

Получаем токен для использования API VK.

Теперь нам необходимо получить токен, он же «access_token». Токен — это набор различных цифр и латинских букв, которую мы будем передаете на сервер вместе с запросом.

Для того, что бы его получить, нам необходимо в браузере вбить следующую строку:

https://oauth.vk.com/authorize?client_id=5490057&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=groups,offline&response_type=token&v=5.52

1 https//oauth.vk.com/authorize?client_id=5490057&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=groups,offline&response_type=token&v=5.52

Где «client_id=5490057» необходимо указать ваш номер «ID приложения», который мы получали ранее. Так же необходимо указать значение «scope=groups,offline», в данной переменной указывается какие права мы даём приложению, groups — доступ к группам, offline — срок действия токена, в нашем случае бессрочный.

https://oauth.vk.com/blank.html#access_token=68f5660720767e2659e96470bfd4be242e6d54d0d6062a1ee545214db91d33e8a8d35f91a8b62adfcf7ff&expires_in=0&user_id=433336

1 https//oauth.vk.com/blank.html#access_token=68f5660720767e2659e96470bfd4be242e6d54d0d6062a1ee545214db91d33e8a8d35f91a8b62adfcf7ff&expires_in=0&user_id=433336

Вот все символы, что идут между «…access_token=» и до «&expires_in…» и есть наш ключ доступа, он же токен. Мой токен будет таким:

68f5660720767e2659e96470bfd4be242e6d54d0d6062a1ee545214db91d33e8a8d35f91a8b62adfcf7ff

1 68f5660720767e2659e96470bfd4be242e6d54d0d6062a1ee545214db91d33e8a8d35f91a8b62adfcf7ff

Дальше Вы его уже можете использовать для ваших нужд.

Как получить токен VK.COM

Получение токена состоит из двух частей: регистрации своего приложения и получение токена в этом приложении.

Создать приложение можно на странице. Указав название приложения, и выбрав его тип.
Я выбираю , потому что тогда можно будет получить токены с бОльшим возможностями, чем в остальных вариантах (придётся поверить мне на слово, что это правда).Как получить access_token вконтакте

Создав приложение и перейдя на вкладку настроек, будет показано: id приложения, секретный ключКак получить access_token вконтакте

Теперь, имея id приложения, можно получить токен доступа. Для этого нужно сформировать ссылку, подставив в неё id своего приложения.

где вместо нужно вставить id своего приложения.
а в параметре — перечислены разрешения, которыми мы хотим наделить токен, список всех разрешений
Однако здесь, одним из самых важных разрешений является , которое создаёт бессрочный токен, не имеющий ограниченного времени жизни.

Перейдя по сформированной ссылке, откроется диалоговое окно, в которому будут зачитаны права показаны разрешения, которыми наделяется токен (чем больше указано свойств, тем больше будет этот список)Как получить access_token вконтакте
Подтвердив, произойдёт переадресация на страницу, в адресной строке которой будет , равный нулю (что логично, учитывая, что мы указывали создание вечного токена)Как получить access_token вконтакте

Скопировав этот токен, можно делать первые запросы к API.

Что такое токен Вконтакте

Токен доступа, или как его часто называют в технической документации, assecc_token, это просто длинная текстовая строка, состоящая из латинских букв и цифр. Выглядеть она может примерно так (это только учебный пример из документации на сайте ВК):

51eff86578a3bbbcb5c7043a122a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a

Токены необходимы для однозначной идентификации любых объектов, зарегистрированных в базе данных Вконтакте. Пользователю не нужно знать структуру этой базы, наименования полей или протоколы доступа. Сервер ВК сам предоставит всё, что нужно, распознав правильно сформированный токен. При этом в нём (в бессмысленной на первый взгляд строке символов) содержится вся необходимая информация о приложении, о сообществе или о пользователе, который запрашивает доступ и о правах, что ему предоставляются.

Механизм аутентификации на основе токенов универсальный и сквозной, то есть он действует и в браузерной версии Вконтакте, и в любых приложениях, подсоединяющихся к базе данных ВК.

Что такое «токен» ВК?

Вконтакте – одна из самых популярных и востребованных социальных сетей не только в России, но и во многих странах СНГ. Каждый раз, когда человек пишет кому-то сообщение, отправляет запрос в друзья, добавляет пользователя в «Чёрный список» и т.д. – всё это сохраняется в API.

А говоря простым русским языком, то «токен» — это строка, состоящая не только из цифр, но и латинских букв, которая передаётся вместе с вашим запросом на то или иное действие. Это своего рода, подпись пользователя.

Какие бывают токены в вк и как их класифицируют?

Как вы и поняли, «токен» — это ключ доступа. Каждый раз, когда вы выполняйте какое-либо действие, то на сервис отправляется запрос, который состоит из цифр и латинских букв. После этого, сервис понимает, что от него требуется. Существуют три вида ключа доступа:

  • Сообщество. У каждого паблика, группы или сообщества есть свой «токен». Чтобы он у вас был достаточно просто его создать;
  • Приложения. Возможно, в это трудно поверить, но даже у игр и других приложений есть ключ доступа. Создавать его не надо, он находится в разделе «Настройки» той программы, в которую вы вошли;
  • Пользователь. У каждого человека, у которого есть персональная страница в социальной сети Вконтакте есть ключ доступа. Возникает он в том случае, когда пользователь решил зайти в какую-нибудь игру или приложение.

Более подробно хочется поговорить о «токене» пользователя, когда он заходит в одно из приложений. Допустим, у вас есть на мобильном устройстве специальная программа, но зайти в неё можно только, если человек прошёл авторизацию через социальную сеть Вконтакте.

Отправляя запрос на сайт, перед пользователем появляется специальное окно с пунктами, в котором говорится о том, что, дав разрешение программе будут доступны некоторые возможности вашей страницы.

После того, как вы решили дать доступ приложения к своей странице, вам нужно просто кликнуть по блоку «Разрешить». После чего, вы без каких-либо проблем войдите в саму программу и будете ею пользоваться.

Для чего нужен токен, какую информацию содержит.

Что такое ключ доступа токен вы уже поняли давайте с вами рассмотрим какую же информацию хранит этот секретный набор символов и для чего он все таки нужен

Для чего же необходим этот ключ:

  • Вместо регистрации и авторизации на сторонних сайтах.
  • Для администрирования групп и сообществ
  • Для интеграции со всемозмодными сервисами и программами

Как получить access_token ВКонтакте.

Получить и узнать свой токен в вконтакте довольно просто достаточно следовать простой инструкции ниже:

  • Переходим на страницу https://vk.com/apps?act=manage
  • Здесь вам необходимо создать приложение которое сгенирирует ваш токен
  • Ставим чекбокс на Standalone-приложение
  • Придумываем ему название
  • Нажимаем сохранить изменения
  • Переходим в раздел настойки в левом углу
  • Самым важным здесь является id приложения
  • Запишите его себе на листик

Как получить access_token вконтакте

Далее

Берем код и копируем его в адресную строку:

Где вместо 12345 вам необходимо вписать свой id

После этого у вас появится вот так:

Как получить access_token вконтакте

Можно ли зная чужой токен в вк взломать страницу

Это довольно серьезная тема для обсуждения и многие из вас гуглят и спрашивают на форумах как можно взломать и получить доступ к чужой странице. Можно ли вообще это сделать?

Вы сможете:

  • Написать новое сообщение кому угодно.
  • Вы НЕ сможете читать переписку
  • Вы можете поставить любой статус
  • Вы можете написать что угодно на стене
  • Вы НЕ сможете менять аватарку или загружать фото

Это далеко не полный список что вы можете сделать, но читать чужую переписку через токен другого пользователя у вас не получится.

Как же это сделать?:

Мы надеемся вам понравилась наша статья

Где взять access_token

Токены создаются по запросу на специальном сайте. Там на сегодняшний день нет никакого удобного интерфейса, вся работа происходит через строку браузера. Методы получения access_token разные для пользователей, приложений или сообществ. Наиболее простой способ известен как Implicit flow, он подразумевает как раз использование прямой ссылки на упомянутый сайт.

Вот, например, как можно получить token, если требуется предоставить доступ к базе данных ВК какому-либо внутреннему приложению (из тех, которые пользователи могут подключать к своим страницам).

Как получить access_token вконтакте

Получение токена через собственное приложение

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

Далее, для получения token доступа вам нужна вот такая строка:

https://oauth.vk.com/authorize?client_id=XXXXXXX&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

Здесь вместо ХХХХХХХ требуется подставить client_id вашего приложения.

В параметре scope указаны права, которые требуется передать программе. Они в примере перечислены через запятую. Их может быть довольно много, все они перечислены на особой странице документации.

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

Как получить access_token вконтакте

Состав иконок, отображающих права, определяется параметром scope из переданной адресной строки.

После клика на кнопке «Разрешить» откроется страница, в адресной строке будет параметр access_token, который и требуется.

Получение токена через официальное приложение VK

Здесь всё то же самое, только получать client_id для программы уже не нужно, она давно зарегистрирована. Используйте такую строку:

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

Перед тем, как передать строку серверу, целесообразно отредактировать содержимое параметра scope в соответствии с вашими потребностями.

Здесь мы привели только общие сведения о том, что такое токен доступа ВК и как его получают. За более подробными сведениями нужно обращаться в справочный раздел для разработчиков на сайте социальной сети.

Как делать запросы к API

Сохраним полученный токен, потому как его нужно будет прикреплять к каждому запросу к VK API.

Для того, чтобы сделать запрос к API из PHP, нам нужна любая из доступных функций, способных совершить HTTP-запрос: file_get_contents, curl.

Запрос к методам API состоит из шаблона:
где {METHODNAME} — имя метода{PARAMETERS} — параметры, индивидуальные, в зависимости от метода{ACCESS_TOKEN} — ранее сохранённый токен{V} — версия API (на момент написания статья = 5.78)

Зная всё это, сделаем первый запрос, на получение всех личных записей со стены. За стену отвечает сущность wall, а метод его get, который возвращает список всех записей со стены пользователя.
И, в итоге, имя метода будет сформировано в виде —

Так, первая часть URL-адреса уже сформирована:

Теперь нужно определиться с передаваемыми параметрами (PARAMS). Все доступные, обязательные параметры с описанием можно посмотреть на странице метода.Как получить access_token вконтакте
Я буду передавать который соответствует id моего пользователя.

И, можно было бы просто дописать в виде строки к существующему URL-адресу: …?owner_id=120159853

Однако, если туда добавлять множество новых параметров, то в таком виде добавлять не удобно. Потому, я создам массив параметров, где ключом будет название параметра, а значение, соответственно, его значение. А с помощью функции http_build_query() можно привести массив к виду строки нужного вида:

Теперь, осталось только собрать воедино все те части, которые были разобраны выше.
Для этого, можно написать такой код:

При том, что даже токен и версию теперь можно вынести в массив , для более централизованной записи.

Осталось последний шаг — выполнение http-запроса. И, принимая тот факт, что данные возвращаются в виде JSON, то, результат, нужно дополнительно обернуть в функцию , которая приведёт JSON к обычному PHP-массиву. Вот так просто декодировать JSON.

В итоге, получаем обычный массив записей, который можем обработать как пожелаемКак получить access_token вконтакте

И, исходя из ответа выше, для получения записей выполним:

Получение токена (access_token) api вк

Https://oauth.vk.com/authorize?client_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

Как получить access_token вконтакте

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

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

Как получить access_token вконтакте

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