通过API使用external_id

你好,

我想通过 API 使用 external_id 创建和检索用户。external_id 将是一个整数,用于引用我们内部数据库中的 ID。这与 SSO 无关。

我正在遵循文档,但似乎无法使其正常工作。我可以创建用户,但无法通过 external_id 检索用户。Create User API 只显示请求包含 external_ids 对象,但没有关于该对象内容信息的更多信息。我在社区中搜索过,只找到了这个主题,但帮助不大。

我正在尝试使用以下 GET 请求检索用户:

https://our_domain.discourse.group/u/by-external/7000.json

但它返回 404 和以下响应:

{
    "errors": [
        "The requested URL or resource could not be found."
    ],
    "error_type": "not_found"
}

以下是我尝试过的一些 Create User 请求的示例。用户已成功创建,只是我无法通过 external_id 检索它们。(旁注:是否也有方法可以查看用户的 external_id?)

{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": 7000
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": "7000"
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": {
        "external_id": 7000
    }
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": [
        7000
    ]
}

您的站点上是否启用了 DiscourseConnect?如果没有,您需要找到身份验证器的提供商名称,并在请求中使用它。有关此内容的详细信息,请参见:https://meta.discourse.org/t/find-a-user-by-their-identity-provider-external-id/169723。

感谢您的回复。

我认为这意味着我们不能使用 external_id,因为我们不想启用 DiscourseConnect。我们不想替换 Discourse 身份验证。

我们可能需要通过 API 创建用户,然后在我们的系统中存储 Discourse 用户 ID 并以此进行引用。

1 个赞