XF-Api-Key. Даже доступ с правами гостя требует ключа: гостевой контекст определяет разрешения, а не отменяет авторизацию.
YOUR_API_KEY — условное обозначение. В примерах для командной строки значение берётся из переменной окружения $FORUM_API_KEY на стороне сервера интеграции.
Получение ключа
В XenForo ключи создаются в панели администратора: Setup → API keys. По стандартным правилам XenForo этот раздел доступен суперадминистраторам; обычные пользователи не выпускают ключи самостоятельно. При создании ключа выбирают его тип и scopes — области API, к которым он получит доступ. Для интеграции стоит выдать отдельный ключ с минимальными правами, необходимыми для её задач.Guard Forum использует XenForo 2.2.19. Доступность конкретного метода зависит от выданного ключа и пользовательского контекста.
Три типа ключей
Guest key подходит для интеграций с гостевым доступом. User key фиксирует пользователя, от имени которого работает приложение. Super user key позволяет серверной интеграции выбирать контекст для каждого запроса.
Пользовательский контекст
Для ключа типаsuper заголовок XF-Api-User задаёт ID пользователя, от имени которого выполняется запрос:
Условный пример заголовков
123 — условный ID. Подставляйте ID пользователя, предусмотренного вашей интеграцией.
Если XF-Api-User не передан, Super user key использует гостевой контекст. Сам тип super не означает, что каждый запрос автоматически выполняется с правами администратора. Для Guest key и User key контекст закреплён типом ключа; заголовок выбора пользователя предназначен для Super user key.
Контекст важен и для чтения: пользователь может видеть только часть разделов форума. В операциях записи он также определяет автора действия, когда это предусмотрено методом.
Scopes и права пользователя
Проверяйте два независимых уровня доступа:
Подходящий scope сам по себе не даёт пользователю доступ к закрытому разделу. И наоборот: права пользователя на форуме не заменяют отсутствующий scope ключа.
Для обычного запроса нужны и подходящий scope, и разрешение пользовательского контекста. Ограничения конкретного метода смотрите в его справочнике.
Особая возможность Super user key
XenForo позволяет запросу с Super user key обойти права пользовательского контекста через параметрapi_bypass_permissions=1. Его можно передать в query string или теле запроса. Это отдельная возможность конкретного запроса; она не включается автоматически из-за типа ключа.
Флаг относится к правам пользовательского контекста. Scopes ключа оцениваются отдельно; возможность обхода прав не следует считать заменой настройки scopes.
Хранение и передача ключа
Держите ключ в серверной конфигурации или хранилище секретов интеграции. Не включайте его в браузерный JavaScript, публичный репозиторий, URL или журнал запросов. Передавайте ключ только вXF-Api-Key через HTTPS.
Следующий пример получает список тем; ключу нужен scope thread:read. Предполагается, что переменная FORUM_API_KEY уже настроена в окружении; команда не выводит её значение:
Запросы и ошибки
Форматы данных, обработка HTTP-статусов и пример серверного клиента.
Механизм ключей XenForo
Официальное описание типов ключей, scopes и пользовательского контекста.