Обмен кода на токен
- метод:
POST - ресурс:
token_endpointиз метаданных - тело:
application/x-www-form-urlencoded - вызывается с сервера: токен не должен попадать в браузер
| Параметр | Что означает |
|---|---|
grant_type * | authorization_code |
client_id * | идентификатор приложения |
code * | код из параметров возврата |
redirect_uri * | тот же адрес, что в запросе авторизации |
code_verifier * | исходная строка, от которой считался code_challenge |
client_secret | только если для приложения выпущен секрет |
resource | тот же адрес, что в запросе авторизации |
curl -X POST https://api.invoicebox.ru/v3/security/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code' \
-d 'client_id=my-service' \
-d 'code=e3b0c44298fc1c14' \
-d 'redirect_uri=https://my-service.ru/auth/callback/' \
-d 'code_verifier=s9Zx1kQd…'
Ответ — без общей оболочки data, поля называются по стандарту:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "def50200a1b2…",
"scope": "merchant-read"
}
expires_in — срок в секундах от момента ответа. Код обмена одноразовый: повторный запрос с тем же
code вернёт invalid_grant.
С полученным токеном запросы к API подписываются заголовком Authorization: Bearer <токен> — как и
при обычной авторизации.