Главная » Авторизация сайтов
Авторизация сайтов
Для доступа к API ВКонтакте с Вашего сайта предусмотрен механизм серверной авторизации на базе протокола OAuth 2.0. Этот метод позволяет реализовать безопасную аутентификацию пользователей на Вашем сайте через ВКонтакте и получить доступ к API с сервера Вашего приложения.

Процесс авторизации сайта состоит из 4-х шагов:
  1. Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте.
  2. Разрешение пользователем доступа к своим данным.
  3. Передача сайту значения code для получения ключа доступа.
  4. Получение сервером приложения ключа доступа access_token для доступа к API ВКонтакте.
1. Открытие диалога авторизации OAuth
Для авторизации пользователя необходимо перенаправить его браузер по адресу:
https://oauth.vk.com/authorize, передав следующие параметры:

client_id Обязательно Идентификатор Вашего приложения.
redirect_uri Обязательно Адрес, на который будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения и перечисленным значениям в списке доверенных redirect uri - адреса сравниваются вплоть до path-части).
display Обязательно Указывает тип отображения страницы авторизации. Поддерживаются следующие варианты:
  • page — форма авторизации в отдельном окне;
  • popup — всплывающее окно;
  • mobile — авторизация для мобильных устройств (без использования Javascript)
Если пользователь авторизуется с мобильного устройства, будет использован тип mobile.
scope Битовая маска настроек доступа приложения, которые необходимо проверить при авторизации пользователя и запросить, в случае отсутствия необходимых.
response_type Тип ответа, который Вы хотите получить. Укажите code, чтобы осуществлять запросы со стороннего сервера.
v Версия API, которую Вы используете. Актуальная версия: 5.92.
state Произвольная строка, которая будет возвращена вместе с результатом авторизации.

Пример запроса:
https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=http://example.com/callback&scope=friends&response_type=code&v=5.92


Если пользователь не вошел на сайт, то в диалоговом окне ему будет предложено ввести свой логин и пароль.
2. Разрешение прав доступа
После успешного входа на сайт пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра scope. Полный список настроек доступен в разделе прав доступа приложений

3. Получение code
После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу redirect_uri, указанному при открытии диалога авторизации. При этом код для получения ключа доступа code будет передан в GET-параметре на указанный адрес:
REDIRECT_URI?code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a


Параметр code может быть использован в течение 1 часа для получения ключа доступа к API access_token с Вашего сервера.

В случае возникновения ошибки браузер пользователя будет перенаправлен с кодом и описанием ошибки:
REDIRECT_URI?error=invalid_request&error_description=Invalid+display+parameter
4. Получение access_token
Для получения access_token необходимо выполнить запрос с Вашего сервера на https://oauth.vk.com/access_token, передав следующие параметры:

client_id Обязательно Идентификатор Вашего приложения
client_secret Обязательно Защищенный ключ Вашего приложения (указан в настройках приложения)
redirect_uri Обязательно URL, который использовался при получении code на первом этапе авторизации. Должен быть аналогичен переданному при авторизации.
code Обязательно Временный код, полученный после прохождения авторизации.

Пример запроса:
https://oauth.vk.com/access_token?client_id=1&client_secret=H2Pk8htyFD8024mZaPHm&redirect_uri=http://mysite.ru&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a


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

{"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, '''user_id":66748}


Если у пользователя указан email, а приложением были запрошены соответствующие права, сервер также вернет email пользователя.

В случае ошибки будут переданы параметры error и error_description.
{"error":"invalid_grant","error_description":"Code is expired."}
Что дальше
После успешной авторизации Вы можете осуществлять запросы к API.