Получить токен по refresh-токену

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

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

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

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

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

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

POST /token HTTP/1.1
Host: 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

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

client_secret

Пароль приложения. Доступен в свойствах приложения (нажмите название приложения, чтобы открыть его свойства).

Пароль и идентификатор приложения также можно передать в заголовке Authorization.

Идентификатор и пароль приложения также можно отправить в заголовке 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

Refresh-токен.

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.