Использование токена регенерации (Refresh Token)
Токен доступа (access token) имеет ограниченное время жизни (передается в параметре expires_in). При авторизации публичных (public) и авторизуемых по паролю (password_credentials) приложений АТС существует возможность регенерировать токен доступа, используя токен регенерации (refresh token). Этот подход позволяет получить новый токен доступа по истечении старого без участия пользователя, так как при регенерации токена доступа с помощью токена регенерации не требуются какие-либо действия от пользователя. Для приложений АТС типа trusted токен регенерации отсутствует.
Токен регенерации также имеет ограниченное время жизни, и если регенерация токена не удалась (система ответит за запрос кодом 401 и сообщением "invalid_grant" в поле error), приложению АТС необходимо повторно осуществить авторизацию.
Для получения токена доступа с помощью токена регенерации приложение АТС должно сделать POST-запрос на URL https://<hostname>/oauth/token. Параметры передаются в теле запроса в формате application/x-www-form-urlencoded.
|
Параметры запроса
Параметр | Описание |
---|---|
grant_type | Всегда должен иметь значение refresh_token |
refresh_token | Значение refresh_token, полученное с токеном, который требуется регенерировать |
redirect_uri | URI, по которому система будет посылать ответ. Должен совпадать с указанным при создании приложения АТС |
client_id | App ID, сгенерированный при создании приложения АТС |
client_secret | App Secret, сгенерированный при создании приложения АТС |
Параметры ответа
Параметр | Описание |
access_token | Токен доступа. Используется приложением АТС для API-запросов |
expires_in | Период времени в секундах, в течение которого токен действителен. Если в процессе использования токена возникла ошибка авторизации, рекомендуется запросить токен заново, даже если заявленное в поле expires_in время до истечения токена еще не прошло |
token_type | Тип токена, всегда имеет значение Bearer |
refresh_token | Refresh token, который может быть использован для регенерации токена доступа, когда он стал недействителен |
Пример
curl -L -X POST 'https://<hostname>/oauth/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'refresh_token=L40pLFI9hgoРlp0lFHNAvPUt0К9K0С' \
--data-urlencode 'client_id=a80f1e618ddd4d4584e2bd18fd464194' \
--data-urlencode 'client_secret=a2423941f5be408c998d5f7287570990' \
--data-urlencode 'redirect_uri=https://testsite.com'
Ответ системы:
{
"access_token": "pyt4ZUcLWc2FP3t10OJUN2N4Xh2qes",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "L40pLFI9hgoРlp0lFHNAvPUt0К9K0С"
}