Обновление токена
- те же адрес и формат тела
grant_type=refresh_token,client_id,refresh_token
curl -X POST https://api.invoicebox.ru/v3/security/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=refresh_token' \
-d 'client_id=my-service' \
-d 'refresh_token=def50200a1b2…'
Ответ — той же формы, что при обмене кода:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "def50200c3d4…",
"scope": "merchant-read"
}
| Поле | Тип | Что означает |
|---|---|---|
access_token | string | новый токен доступа; прежний перестаёт действовать |
token_type | string | всегда Bearer |
expires_in | integer | срок в секундах от момента ответа |
refresh_token | string | новый токен обновления: прежний недействителен, храните только последний |
scope | string | права через пробел; шире прежних они не станут |
Внимание
Повторное использование уже обменянного refresh_token отзывает всю цепочку: и тот токен, что
предъявили, и тот, что был выдан вместо него. Пользователю придётся заново дать доступ.
Так сделано намеренно. Если старый токен обновления пришёл во второй раз, значит он есть у кого-то ещё, — и правильный ответ здесь не «отказать в одном запросе», а прекратить доступ по всей цепочке. Практический вывод для вас: не обновляйте токен из двух процессов одновременно и не повторяйте запрос обновления при таймауте, не проверив, не пришёл ли ответ.