Гайды
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)
- Приложение открывает
GET /api/v2/oauth/authorize?client_id=…&redirect_uri=…&state=…&scope=…&code_challenge=…&code_challenge_method=S256 - Нет сессии на сайте → редирект на логин DLE, потом возврат.
- Залогинен → 302 на
redirect_uri?code=…&state=…. Redirect URI обязан совпадать с URI клиента; иначе ошибка безcode. У клиента нужен grantauthorization_code. - Обмен кода:
POST /oauth/tokenсgrant_type=authorization_code,client_id,client_secret,code,redirect_uri, опциональноcode_verifier. - Дальше везде:
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_client | client_credentials |
auth | password |
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).
Чеклист для внешнего приложения
- Уровень + API-ключ; клиент с нужными grants и Redirect URI (oauth-client).
- Discovery или URL с панели админки.
- Code-flow или M2M (
oauth_client/client_credentials). - Секрет — только на сервере приложения.
- API только с Bearer — auth.