通过其身份提供商的“external ID”查找用户

:bookmark: 本指南说明了如何使用 API 调用根据身份提供商的 external_id 查找 Discourse 用户。

:person_raising_hand: 所需用户级别:管理员

当使用外部身份验证系统时,Discourse 会跟踪两个用户 ID:Discourse 的 user_id 和来自身份提供商的 external_id。如果您需要根据 external_id 查找 Discourse 用户,那么这篇 howto 文章就是为您准备的!下面,您将了解如何执行此操作。

API 设置

首先,请确保已正确配置管理员 API 密钥。有关设置和使用 Discourse API 的更多信息,请参阅 Discourse API 文档

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} 替换为您要查找的用户的实际外部 ID。如果找到用户,将返回其信息。如果没有找到,将返回 404 错误。

其他身份验证提供商

这适用于所有核心方法以及使用“ManagedAuthenticator”框架的插件(包括 discourse-openid-connect 和 discourse-oauth2-basic)。

首先,找到您的身份验证器的“提供商名称”(‘provider name’)。这通常包含在回调 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} 替换为您要查找的用户的外部 ID。如果找到用户,将返回其信息。如果没有找到,将返回 404 错误。

附加资源

15 个赞