Отзыв токенов
Яндекс OAuth отзывает токены в следующих случаях:
-
Доступ был отозван пользователем на странице Доступы к данным. При отзыве OAuth-токена соответствующий refresh-токен отзывается автоматически.
-
Срок жизни токена истек.
-
Владелец приложения изменил запрашиваемые права либо удалил приложение. В этом случае отзываются все токены, когда-либо выданные этому приложению.
-
Пользователь совершил действие, при котором отзываются все OAuth-токены и refresh-токены, когда-либо выданные для учетной записи:
-
изменил пароль;
-
включил или выключил двухфакторную аутентификацию;
-
успешно восстановил доступ к аккаунту;
-
перешел по ссылке Выйти везде в Яндекс ID или на каком-то другом сервисе.
-
Отзыв токенов в приложении
Приложение может отзывать OAuth-токены, которые были выданы для определенного устройства, с помощью специального запроса к Яндекс OAuth.
Чтобы реализовать выход из учетной записи для обычных токенов, можно удалять соответствующие ей токены из локального хранилища — восстановить удаленный токен через Яндекс OAuth невозможно, приложение должно будет запросить доступ заново.
При этом для пользователя на странице Доступы к данным ничего не изменится. Токен, выданный приложению, будет считаться активным, пока не будет отозван каким-либо из перечисленных выше способом.
Отзыв токена для устройства
Яндекс OAuth позволяет запросить токен для приложения на конкретном устройстве. Для этого в запросе токена или кода подтверждения следует указать идентификатор устройства и его имя (параметры device_id
и device_name
описаны в форматах запросов на страницах этого документа). Это имя пользователь сможет увидеть на странице управления доступом в API Яндекс ID. Если указать только идентификатор, без имени, токен будет помечен как выданный для неизвестного устройства.
Внимание
У приложения не может быть больше 30 токенов, привязанных к устройствам определенного пользователя. Если Яндекс OAuth успешно выдает приложению новый токен для устройства, самый старый из таких токенов перестает работать.
Токен, выданный для определенного устройства, можно отозвать запросом к Яндекс OAuth, например, чтобы гарантировать выход из аккаунта.
Чтобы отозвать токен, нужно передать его в Яндекс OAuth с идентификатором и паролем приложения.
Аутентификация приложения
В запросах к Яндекс OAuth следует указывать идентификатор и пароль, которые были сгенерированы при регистрации приложения.
В запросе их можно передать разными способами:
-
В заголовке
Authorization
, в строке<client_id>:<client_secret>
, закодированной методом base64. При этом следует указывать базовый (Basic
) метод авторизации.Пример заголовка:
Authorization: Basic <закодированная строка client_id:client_secret>
-
В теле POST-запроса, в параметрах
client_id
иclient_secret
. Эти параметры обязательно должны передаваться одновременно.
Если Яндекс OAuth получает заголовок Authorization
, параметры client_id
и client_secret
в теле запроса игнорируются.
Формат запроса
Запрос следует отправлять по протоколу HTTPS c помощью метода POST.
POST /revoke_token HTTP/1.1
Host: https://oauth.yandex.ru/
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
[Authorization: Basic <закодированная строка client_id:client_secret>]
& access_token=<отзываемый токен>
[& client_id=<идентификатор приложения>]
[& client_secret=<секретный ключ>]
Параметр |
Описание |
Обязательный параметр |
|
|
OAuth-токен, который нужно отозвать. |
Дополнительные параметры |
|
|
Идентификатор приложения. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения. Параметр обязателен, если в запросе не был указан заголовок Authorization. |
|
Секретный ключ. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения. Параметр обязателен, если в запросе не был указан заголовок Authorization. |
Формат ответа
Яндекс OAuth возвращает ответ в JSON-документе.
Если токен успешно отозван или уже был недействителен, возвращается ответ с HTTP-кодом 200 и телом:
{
"status": "ok"
}
Если запрос выполнить не удалось, то ответ возвращается с HTTP-кодом ошибки и ее описанием:
{
"error_description": "Client not found",
"error": "invalid_client"
}
Параметр |
Описание |
|
Описание ошибки на естественном языке. |
|
Поддерживаемые коды ошибок
HTTP-код ответа |
Код ошибки |
Описание |
400 |
|
Неверный формат запроса (например, не указан обязательный параметр). |
400 |
|
Переданный токен не принадлежит указанному приложению. |
400 или 401 |
|
Возвращается в следующих случаях:
HTTP-код ответа 401 возвращается, если идентификатор и секретный ключ были переданы в заголовке |
400 |
|
Токен не может быть отозван, так как при запросе этого токена не был указан идентификатор устройства (параметр Если токен нельзя отозвать, его можно просто удалить из локального хранилища, чтобы приложение потеряло доступ к данным пользователя. |