Согласие и код авторизации
Чтобы получить доступ к компании, отправьте её администратора на страницу согласия Дескуса. После «Разрешить» он вернётся на ваш адрес с одноразовым кодом.
Ссылка на согласие
GET https://app.deskus.ru/oauth/authorize
?response_type=code
&client_id=dskapp_f18acd3e81b2ff4c896f1177
&redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fdeskus
&scope=tickets%3Aread%20tickets%3Awrite%20webhooks
&state=a8Kx2pQ
&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
&code_challenge_method=S256Параметр | Что передать |
|---|---|
| Всегда |
| Из карточки приложения |
| Один из адресов возврата, точно как в карточке |
| Права через пробел (список) |
| Случайная строка: вернётся без изменений — сверьте её, чтобы отсечь подделку |
| base64url от SHA-256 вашего |
| Только |
PKCE на Node.js
import crypto from "node:crypto";
const codeVerifier = crypto.randomBytes(32).toString("base64url"); // сохраните до обмена кода
const codeChallenge = crypto.createHash("sha256").update(codeVerifier).digest("base64url");Что видит клиент
Не вошёл — сначала вход в кабинет, потом сразу экран согласия. На нём: «Приложение просит доступ», название компании, описание приложения, права списком, адрес, куда он вернётся, и кнопки «Разрешить» и «Отказать». «Разрешить» доступно только администратору компании.
Ответ на адрес возврата
Разрешил
https://example.com/oauth/deskus?code=dsk_c_Qm4…&state=a8Kx2pQОтказал
https://example.com/oauth/deskus?error=access_denied&error_description=…&state=a8Kx2pQКод живёт 10 минут и обменивается один раз — обмен на токены.
Ошибки
Что не так | Что будет |
|---|---|
Неизвестный или выключенный | Ошибка на странице Дескуса — на непроверенный адрес клиента не уводим |
| Возврат на ваш адрес с |
Пустой или неизвестный |
|
Нет PKCE у приложения без секрета, метод не |
|
Приложение не проверено, а компания чужая | Ошибка на странице Дескуса — проверка |
