Для доступа к API ВКонтакте с Вашего сайта предусмотрен механизм серверной авторизации на базе протокола OAuth 2.0. Этот метод позволяет реализовать безопасную аутентификацию пользователей на Вашем сайте через ВКонтакте и получить доступ к API с сервера Вашего приложения.
Процесс авторизации сайта состоит из 4-х шагов:
- Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте.
- Разрешение пользователем доступа к своим данным.
- Передача сайту значения code для получения ключа доступа.
- Получение сервером приложения ключа доступа access_token для доступа к API ВКонтакте.
Для авторизации пользователя необходимо перенаправить его браузер по адресу:
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
Если пользователь не вошел на сайт, то в диалоговом окне ему будет предложено ввести свой логин и пароль.
После успешного входа на сайт пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра
scope. Полный список настроек доступен в разделе
прав доступа приложений.
После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу
redirect_uri, указанному при открытии диалога авторизации. При этом код для получения ключа доступа
code будет передан в GET-параметре на указанный адрес:
REDIRECT_URI?code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a
Параметр
code может быть использован в течение 1 часа для получения ключа доступа к API
access_token с Вашего сервера.
В случае возникновения ошибки браузер пользователя будет перенаправлен с кодом и описанием ошибки:
REDIRECT_URI?error=invalid_request&error_description=Invalid+display+parameter
Для получения
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.