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

XenForo и DLE API v200.1.0

Два направления OAuth: логин на форуме через DLE и токены XenForo для XF API.

Здесь два разных сценария. Не смешивайте URL.

Примеры: XenForo http://localhost:8789, DLE http://dle200.test.

Кто выдаёт токен?

НаправлениеКто серверГде заводят клиентAuthorize / token
DLE → XenForoXenForoACP XF: OAuth2 clients{XF}/oauth2/…
XenForo → DLEDLE APIDevCraft → 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 typeConfidential (есть secret) или Public
Redirect URIscallback вашего приложения, байт-в-байт
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

  1. API-ключ с уровнем.
  2. OAuth-клиент: grants authorization_code + refresh_token.
  3. Redirect URI = Board URL XF + /connected_account.php, например http://localhost:8789/connected_account.php.
  4. Сохраните секрет; прогоните 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

ЦельAuthTokenIdentity
Токен DLE…/api/v2/oauth/authorize…/api/v2/oauth/tokenGET /api/v2/me
Токен XenForo…/oauth2/authorize…/api/oauth2/tokenGET /api/me

Первая строка — гайд Postman.

Если что-то не работает

СимптомЧто проверить
Нет code на authorize DLERedirect 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 401Bearer от XF-токена; scope user:read

См. также

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