Токен доступа (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С" }