Обновление токена
Получение токена в обмен на refresh-токен:
-
Приложение отправляет POST-запрос с refresh-токеном.
-
Яндекс 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=<секретный ключ>]
Обязательные параметры
Параметр |
Описание |
|
Способ запроса OAuth-токена. Если вы используете refresh-токен, укажите значение |
|
Refresh-токен, полученный от Яндекс OAuth вместе с OAuth-токеном. Время жизни токенов совпадает. |
Дополнительные параметры
Параметр |
Описание |
|
Идентификатор приложения. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения. Секретный ключ и идентификатор приложения также можно передать в заголовке |
|
Секретный ключ. Доступен в свойствах приложения. Чтобы открыть свойства, перейдите в Яндекс OAuth и нажмите на название приложения. Секретный ключ и идентификатор приложения также можно передать в заголовке |
Параметры запроса должны передаваться в теле запроса и должны быть закодированы в 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
}
Параметр |
Описание |
|
OAuth-токен с правами, которые вы запросили или указали при регистрации приложения. |
|
Токен, который можно использовать для продления срока жизни соответствующего OAuth-токена. |
|
Тип выданного токена. Всегда принимает значение |
|
Время жизни токена в секундах. |
Если выдать токен не удалось, ответ содержит описание ошибки:
{
"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.