DevCraft Документации
Гайды

OAuth Authorization Server v200.1.0

Как сайт DLE выдаёт токены: discovery, authorize, credential_type и curl.

Сайт с DLE API умеет раздавать OAuth-токены для /api/v2. Сначала заведите приложение в админке: OAuth-клиенты. Этот гайд — про запросы к серверу.

Discovery (без пропуска)

GET /api/v2/.well-known/oauth-authorization-server

В JSON будут адреса authorize/token/revoke/userinfo и список поддерживаемых способов входа. Те же URL копируются с панели OAuth-клиенты.

МетодПутьНужен Bearer?
GET/POST/oauth/authorizeсессия DLE (гость → логин)
POST/oauth/tokenнет
POST/oauth/revokeнет (token в теле)
GET/oauth/userinfoда
GET/meда

Вход через браузер (Authorization Code + PKCE)

  1. Приложение открывает
    GET /api/v2/oauth/authorize?client_id=…&redirect_uri=…&state=…&scope=…&code_challenge=…&code_challenge_method=S256
  2. Нет сессии на сайте → редирект на логин DLE, потом возврат.
  3. Залогинен → 302 на redirect_uri?code=…&state=…. Redirect URI обязан совпадать с URI клиента; иначе ошибка без code. У клиента нужен grant authorization_code.
  4. Обмен кода: POST /oauth/token с grant_type=authorization_code, client_id, client_secret, code, redirect_uri, опционально code_verifier.
  5. Дальше везде: Authorization: Bearer <access_token> — см. Авторизация.

Упрощённая выдача: credential_type

В теле POST /oauth/token можно указать credential_type вместо классического grant_type. Если поле есть — берётся эта ветка.

Ключ из админки → токен с его правами. Удобно для скриптов без OAuth-клиента.

curl -sS -X POST 'https://ВАШ_САЙТ/api/v2/oauth/token' \
  -H 'Content-Type: application/json' \
  -d '{"credential_type":"api_key","api_key":"…"}'
credential_typeПохожий grant_type
oauth_clientclient_credentials
authpassword
api_keyпрямого аналога в классическом OAuth2 нет

authorization_code и refresh_token — только через grant_type.

Отозвать токен

curl -sS -X POST 'https://ВАШ_САЙТ/api/v2/oauth/revoke' \
  -H 'Content-Type: application/json' \
  -d '{"token":"…"}'

Демо-режим

Если токен не выдаётся при верных данных — смотрите Инструкция .env (DEMO_MODE).

Чеклист для внешнего приложения

  1. Уровень + API-ключ; клиент с нужными grants и Redirect URI (oauth-client).
  2. Discovery или URL с панели админки.
  3. Code-flow или M2M (oauth_client / client_credentials).
  4. Секрет — только на сервере приложения.
  5. API только с Bearer — auth.

См. также

На этой странице