ДескусДескус · Документация
Все разделыАвторизация

Токены: обмен кода, обновление и отзыв

Код меняют на пару токенов: доступ на час и обновление на 90 дней. Запросы — с вашего сервера, с client_secret.

Обмен кода

Запрос

curl https://app.deskus.ru/api/oauth/token \
  -u "dskapp_f18acd3e81b2ff4c896f1177:dsk_s_…" \
  -d grant_type=authorization_code \
  -d code=dsk_c_Qm4… \
  -d redirect_uri=https://example.com/oauth/deskus \
  -d code_verifier=…

Ответ 200

{
  "access_token": "dsk_a_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dsk_r_…",
  "scope": "tickets:read tickets:write webhooks"
}
  • Тело — application/x-www-form-urlencoded или JSON.

  • Приложение — заголовком Authorization: Basic (как -u у curl) или полями client_id и client_secret в теле. У приложения без секрета — только client_id.

  • redirect_uri — тот же, что при входе. code_verifier — тот, от которого считали code_challenge.

Обновление

curl https://app.deskus.ru/api/oauth/token \
  -u "dskapp_…:dsk_s_…" \
  -d grant_type=refresh_token \
  -d refresh_token=dsk_r_…

Ответ — новая пара токенов. Старая перестаёт работать сразу, в том числе старый токен доступа. Сохраняйте новый refresh_token — прежний второй раз не примут.

Обновление одноразовое

Если уже использованный refresh_token придёт снова, Дескус считает его утёкшим и отзывает подключение целиком: компании придётся подключить приложение заново. Обновляйте токен в одном месте и не повторяйте запрос при обрыве вслепую.

Отзыв

curl https://app.deskus.ru/api/oauth/revoke \
  -u "dskapp_…:dsk_s_…" \
  -d token=dsk_r_…
  • Отзыв refresh_token — приложение отключается от компании: все токены гаснут, его подписки на события удаляются. Так делайте кнопку «Отключить Дескус».

  • Отзыв токена доступа — гаснет только он.

  • Неизвестный токен — тоже 200 {}: мы не подсказываем, какие токены существуют.

Ошибки

Ответ 400

{ "error": "invalid_grant", "error_description": "Срок кода истёк — начните вход заново." }

error

Когда

invalid_request

Нет code или тело не разобрать

invalid_client (401)

Неизвестный или выключенный client_id, неверный client_secret

invalid_grant

Код не найден, истёк или уже использован; не тот redirect_uri или code_verifier; refresh отозван, истёк или повторён

unauthorized_client

Приложение не проверено Дескусом, а компания чужая (проверка)

unsupported_grant_type

grant_type не authorization_code и не refresh_token

slow_down (429)

Больше 120 запросов в минуту с одного адреса, ждите Retry-After

Код, который пытаются обменять второй раз, тоже признак утечки: токены, выданные по нему, отзываются.

Не нашли ответ? Напишите нам
Поддержка ответит в рабочее время.
Вы сотрудник «Дескус»?Изменить статью в Дескусе