Обновить токен

Получение токена в обмен на refresh-токен:

  1. Приложение отправляет POST-запрос с refresh-токеном.

  2. Яндекс OAuth возвращает токен и новый refresh-токен в теле ответа.

Примечание

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

Полученный токен можно сохранить в приложении и использовать для запросов к API до истечения времени его жизни. Токен должен быть доступен только вашему приложению, поэтому не рекомендуется сохранять его в браузере или открытых конфигурационных файлах.

Обмен refresh-токена на OAuth-токен

Формат запроса

Приложение отправляет refresh-токен, а также свой идентификатор и пароль в POST-запросе.

POST /token HTTP/1.1
Host: https://oauth.yandex.ru/
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
[Authorization: Basic <закодированная строка client_id:client_secret>]

   grant_type=refresh_token
 & refresh_token=<refresh_token>
[& client_id=<идентификатор приложения>]
[& client_secret=<секретный ключ>]

Обязательные параметры

Параметр

Описание

grant_type

Способ запроса OAuth-токена.

Если вы используете refresh-токен, укажите значение refresh_token.

refresh_token

Refresh-токен, полученный от Яндекс OAuth вместе с OAuth-токеном. Время жизни токенов совпадает.

Дополнительные параметры

Параметр

Описание

client_id

Идентификатор приложения. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения.

Секретный ключ и идентификатор приложения также можно передать в заголовке Authorization.

client_secret

Секретный ключ. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения.

Секретный ключ и идентификатор приложения также можно передать в заголовке Authorization.

Параметры запроса должны передаваться в теле запроса и должны быть закодированы в urlencode.

Примечание

Чтобы передать идентификатор и секретный ключ в заголовке Authorization, закодируйте строку <client_id>:<client_secret> методом base64.

Если Яндекс OAuth получает заголовок Authorization, параметры client_id и client_secret в теле запроса игнорируются.

Формат ответа

Яндекс OAuth возвращает OAuth-токен, refresh-токен и время их жизни в JSON-формате:

200 OK
Content-type: application/json

{
"access_token": "AQAAAACy1C6ZAAAAfa6vDLuItEy8pg-iIpnDxIs",
"refresh_token": "1:GN686QVt0mmakDd9:A4pYuW9LGk0_UnlrMIWklkAuJkUWbq27loFekJVmSYrdfzdePBy7:A-2dHOmBxiXgajnD-kYOwQ",
"token_type": "bearer",
"expires_in": 124234123534
}

Параметр

Описание

access_token

OAuth-токен с запрошенными правами или с правами, указанными при регистрации приложения.

refresh_token

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

token_type

Тип выданного токена. Всегда принимает значение bearer.

expires_in

Время жизни токена в секундах.

Если выдать токен не удалось, ответ содержит описание ошибки:

{
   "error_description": "<описание ошибки>",
   "error": "<код ошибки>"
}

Возможные коды ошибок:

  • invalid_client ― приложение с указанным идентификатором (параметр client_id) не найдено или заблокировано. Этот код также возвращается, если в параметре client_secret передан неверный секретный ключ.

  • invalid_grant — неверный или просроченный refresh-токен. Этот код также возвращается, если в refresh-токен принадлежит другому приложению (не соответствует переданному client_id).

  • invalid_request ― неверный формат запроса (один из параметров не указан, указан дважды, или передан не в теле запроса).

  • unauthorized_client — приложение было отклонено при модерации или только ожидает ее. Также возвращается, если приложение заблокировано.

  • unsupported_grant_type ― недопустимое значение параметра grant_type.

  • Basic auth required — тип авторизации, указанный в заголовке Authorization, отличен от Basic.

  • Malformed Authorization header — заголовок Authorization не соответствует формату <client_id>:<client_secret>, или эта строка не закодирована методом base64.

Предыдущая
Следующая