XenForo и DLE API v200.1.0
Два направления OAuth: логин на форуме через DLE и токены XenForo для XF API.
Здесь два разных сценария. Не смешивайте URL.
Примеры: XenForo http://localhost:8789, DLE http://dle200.test.
Кто выдаёт токен?
| Направление | Кто сервер | Где заводят клиент | Authorize / token |
|---|---|---|---|
| DLE → XenForo | XenForo | ACP XF: OAuth2 clients | {XF}/oauth2/… |
| XenForo → DLE | DLE API | DevCraft → OAuth-клиенты | {DLE}/api/v2/oauth/… |
Board URL Connected Account «XenForo» = другой форум, не сайт DLE.
Клиент DLE проверяйте в Postman.
DLE → XenForo (нужен API форума)
Приложение получает токен у XenForo и ходит в XF API. Это не логин на DLE и не клиент DevCraft.
ACP: Setup → OAuth2 clients → Add.
| Поле | Что ставить |
|---|---|
| Client type | Confidential (есть secret) или Public |
| Redirect URIs | callback вашего приложения, байт-в-байт |
| Allowed scopes | минимум user:read |
| Active | включить |
Endpoints с формы XF (пример):
- Authorize:
http://localhost:8789/oauth2/authorize - Token:
http://localhost:8789/api/oauth2/token
Identity: GET http://localhost:8789/api/me с Bearer этого клиента. Форма ответа XF: { "me": { "user_id": … } } — не путать с DLE /api/v2/me.
SSO XF→XF: на втором форуме Connected accounts → XenForo, Board URL = первый форум.
XenForo → DLE (логин на форуме через аккаунт DLE)
На стороне DLE
- API-ключ с уровнем.
- OAuth-клиент: grants
authorization_code+refresh_token. - Redirect URI = Board URL XF +
/connected_account.php, напримерhttp://localhost:8789/connected_account.php. - Сохраните секрет; прогоните code-flow в Postman с тем же Callback.
Add-on на XenForo
Готовый провайдер: DLE API Connection Provider. После установки: Setup → Connected accounts → DLE API — base URL, client_id, secret → Test provider.
Настройка: configuration.
League GenericProvider (скрипт, не кнопка логина)
$provider = new \League\OAuth2\Client\Provider\GenericProvider([
'clientId' => '…',
'clientSecret' => '…',
'redirectUri' => 'http://localhost:8789/connected_account.php',
'urlAuthorize' => 'http://dle200.test/api/v2/oauth/authorize',
'urlAccessToken' => 'http://dle200.test/api/v2/oauth/token',
'urlResourceOwnerDetails' => 'http://dle200.test/api/v2/me',
]);Какой URL в Postman
| Цель | Auth | Token | Identity |
|---|---|---|---|
| Токен DLE | …/api/v2/oauth/authorize | …/api/v2/oauth/token | GET /api/v2/me |
| Токен XenForo | …/oauth2/authorize | …/api/oauth2/token | GET /api/me |
Первая строка — гайд Postman.
Если что-то не работает
| Симптом | Что проверить |
|---|---|
Нет code на authorize DLE | Redirect URI = …/connected_account.php байт-в-байт; grant authorization_code |
| 404 на token | Не перепутать XF /api/oauth2/token и DLE /api/v2/oauth/token |
| Штатный CA «XenForo» к DLE | Не подойдёт — нужен add-on |
error=demo_mode | Инструкция .env |
XF /api/me 401 | Bearer от XF-токена; scope user:read |