Использование токена регенерации (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.

POST https://<hostname>/oauth/token

Параметры запроса

Параметр

Описание

Параметр

Описание

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С" }

← Запросы к API с токеном доступа