Это руководство объясняет, как найти пользователя Discourse по его
external_idот провайдера идентификации, используя вызовы API.
Требуемый уровень пользователя: Администратор
При использовании внешней системы аутентификации Discourse отслеживает два идентификатора пользователя: user_id в Discourse и external_id от провайдера идентификации. Если вам нужно найти пользователя Discourse по external_id, эта статья howto для вас! Ниже вы узнаете, как выполнить эту операцию.
Настройка API
Сначала убедитесь, что у вас правильно настроен ключ администратора API. Дополнительную информацию о настройке и использовании API Discourse см. в документации по API Discourse.
DiscourseConnect
Если вы используете DiscourseConnect (ранее известный как Discourse SSO), вы можете получить данные пользователя с помощью следующего вызова API:
curl https://myforum.example.com/u/by-external/{external-id}.json \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: discourse1"
Замените {external-id} на фактический внешний идентификатор искомого пользователя. Если пользователь найден, будет возвращена его информация. Если нет, будет возвращена ошибка 404.
Другие провайдеры аутентификации
Это работает для всех основных методов, а также для плагинов, использующих фреймворк “ManagedAuthenticator” (включая discourse-openid-connect и discourse-oauth2-basic).
Сначала найдите “имя провайдера” вашего аутентификатора. Обычно оно содержится в URL-адресе обратного вызова (например, если URL обратного вызова — /auth/oauth2_basic/callback, то имя провайдера — oauth2_basic).
Затем вы можете получить данные пользователя следующим образом:
curl https://myforum.example.com/u/by-external/{provider}/{external-id}.json \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: discourse1"
Замените {provider} на фактическое имя провайдера, а {external-id} — на внешний идентификатор искомого пользователя. Если пользователь найден, будет возвращена его информация. Если нет, будет возвращена ошибка 404.