Implicit Flow для получения ключа доступа пользователя
Для приложений на iOS, Android, Windows Phone мы рекомендуем использовать упрощенную схему авторизации через SDK.
Используйте Implicit Flow для вызова методов API ВКонтакте непосредственно с устройства пользователя (например, из Javascript). Ключ доступа, полученный таким способом, не может быть использован для запросов с сервера.
Открытие диалога авторизации
Необходимо перенаправить браузер пользователя по адресу
https://oauth.vk.com/authorize
, передав следующие параметры:
- •
client_id
(обязательный) — идентификатор вашего приложения. - •
redirect_uri
(обязательный) — адрес, на который будет переадресован пользователь после прохождения авторизации (см.redirect_uri
). - •
display
— указывает тип отображения страницы авторизации. Поддерживаются следующие варианты:- •
page
— форма авторизации в отдельном окне; - •
popup
— всплывающее окно; - •
mobile
— авторизация для мобильных устройств (без использования Javascript)
Если пользователь авторизуется с мобильного устройства, будет использован тип
mobile
. - •
- •
scope
— битовая маска настроек доступа приложения, которые необходимо проверить при авторизации пользователя и запросить отсутствующие. - •
response_type
— тип ответа, который необходимо получить. Укажитеtoken
. - •
state
— произвольная строка, которая будет возвращена вместе с результатом авторизации. - •
revoke=1
— параметр, указывающий, что необходимо не пропускать этап подтверждения прав, даже если пользователь уже авторизован.
Пример запроса:
https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=http://example.com/callback&scope=friends&response_type=token&v=5.131&state=123456
Redirect_uri
Redirect_uri — это URL, на который будет переадресован браузер пользователя после разрешения им прав доступа.
Если вы разрабатываете веб-приложение и хотите работать с API из Javascript, в redirect_uri
необходимо указать адрес страницы на Вашем сайте. В целях безопасности, этот адрес также должен быть указан в настройках вашего приложения (поля «Адрес сайта», «Базовый домен» и «Доверенный Redirect URI»).
Обратите внимание, вы не сможете работать с методами, которые помечены как доступные только для Standalone-приложений. Во всех остальных случаях (мобильное, десктопное приложение) необходимо использовать
redirect_uri
по умолчанию:https://oauth.vk.com/blank.html
Если пользователь не авторизован ВКонтакте в используемом браузере, то в диалоговом окне ему будет предложено ввести свой логин и пароль.
Разрешение прав доступа
После успешного входа на сайт пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра scope
. Полный список настроек доступен в разделе прав доступа приложений.
С ключом пользователя, полученным в Implicit Flow, можно работать с наибольшим количеством прав доступа и соответствующих методов по сравнению с остальными способами авторизации.
Обратите внимание, что некоторые права могут быть запрошены только Standalone-приложением (например, право доступа
messages
). Это автоматически означает необходимость использованияredirect_uri
по умолчанию (см.redirect_uri
).
Получение access_token
После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу redirect_uri
, указанному при открытии диалога авторизации. При этом ключ доступа к API access_token
и другие параметры будут переданы в URL-фрагменте ссылки:
http://REDIRECT_URI#access_token=533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492&state=123456
Вместе с ключом access_token
также будет указано время его жизни expires_in
, заданное в секундах. expires_in
содержит 0
, если токен бессрочный (при использовании scope
= offline
). Если срок использования ключа истек, то необходимо повторно провести все описанные выше шаги, но в этом случае пользователю уже не придется дважды разрешать доступ. Запрашивать access_token
также необходимо при смене пользователем логина или пароля или удалением приложения в настройках доступа.
Кроме того, среди возвращаемых параметров будет указан user_id
— идентификатор авторизовавшегося пользователя.
В случае возникновения ошибки авторизации в качестве GET-параметров в redirect_uri
будет передана информация об этой ошибке.
http://REDIRECT_URI#error=access_denied&error_description=The+user+or+authorization+server+denied+the+request.