OAuth-клиенты v200.1.0
Как завести приложение в админке DLE API: ключ, grants, redirect, секрет.
OAuth-клиент — это запись «внешнее приложение» в DevCraft → DLE API → OAuth-клиенты. Права токена = права API-ключа, к которому клиент привязан. Сам сайт при этом раздаёт токены — см. OAuth-сервер.
Что нужно заранее
- Установка
- API-ключ с нужным уровнем доступа
URL сервера (копируйте из админки)
Над списком клиентов — панель адресов (база /api/v2):
| Название | Путь |
|---|---|
| discovery | /.well-known/oauth-authorization-server |
| authorize | /oauth/authorize |
| token | /oauth/token |
| revoke | /oauth/revoke |
| userinfo | /oauth/userinfo |
Их же отдаёт discovery JSON. Сценарии с curl: oauth-server.
Создание клиента
Создайте API-ключ
Страница Ключи — без ключа клиенту не к чему привязать права.
Заполните форму «Создать клиент»
| Поле | Обязательно | Простыми словами |
|---|---|---|
| Название | нет | Подпись в списке; пусто → подставится client_id |
| API-ключ | да | Какие таблицы и действия разрешены токену |
| Redirect URI | для входа через браузер | Точный URL возврата; для M2M можно пусто |
| Grant types | да (≥1) | Способы выдачи токена |
Сервер сам выдаёт client_id и client_secret. Секрет показывают один раз — сохраните сразу. Потом только «Пересоздать client_secret».
PKCE (code_challenge / code_verifier) в форме нет — их шлёт приложение на authorize/token.
Проверка: Postman. Связка с форумом: XenForo.
Редактирование
client_idне меняется.- Можно менять название, ключ, Redirect URI, grants, флаг Активен.
- Неактивный клиент новые токены не получает.
- Секрет — только пересоздание; старый сразу мёртв.
Какой grant выбрать
| Grant | Когда |
|---|---|
authorization_code (+ часто refresh_token) | Пользователь логинится через сайт DLE (SPA, внешнее приложение) — нужен Redirect URI |
client_credentials | Сервер-к-серверу, без пользователя |
password | Логин/пароль в теле запроса — только доверенным клиентам |
refresh_token | Обновить access_token после code-flow |
Берите минимум grants. Redirect URI для code-flow должен совпадать с запросом байт-в-байт.
Связь с упрощённым credential_type и примерами curl: oauth-server, auth.
Если что-то не работает
| Симптом | Что проверить |
|---|---|
| Не создаётся клиент | Выбран ключ; отмечен хотя бы один grant |
| Ошибка на authorize | Redirect URI = URI клиента; есть grant authorization_code |
invalid_grant | Нужный grant включён у клиента |
| Потерян секрет | «Пересоздать client_secret» |
Токен null при верных данных | Инструкция .env — часто DEMO_MODE |
401 на /table | Нужен Bearer от token, не сырой API-ключ (auth) |