通过API从连接的客户端更新或创建现有用户的最佳方法是什么?

这是用例,我相信很多人都遇到过:

  • Discourse 中有一堆用户
  • 有一个外部系统(服务提供商、Drupal)使用 API 创建 Discourse 用户并管理组成员资格
  • Drupal 具有部分重叠的用户集。即,电子邮件地址相同的用户存在于 Discourse 和 Drupal 中,但未关联
  • Drupal 使用 API 同步用户、组和成员资格,因为用户可能永远不会使用 SSO 访问 Discourse,而是依赖电子邮件

当前行为:

  • Discourse 有时会拒绝创建 Discourse 用户的 API 调用,因为已存在具有相同电子邮件的 Discourse 用户

期望行为:

  • Discourse 通过电子邮件将现有 Discourse 用户与 Drupal 用户关联起来

建议解决方案:

  • 查询 discourse /admin/users/list/all.json?email=$email API 端点以获取具有匹配电子邮件地址的任何用户
  • 如果匹配用户存在
    • 连接现有用户(Drupal 端)
  • 否则
    • 创建新的 Discourse 用户

问题

  • 这似乎是一个合理的解决方案,还是有更好的方法?
  • API 查询是否正确?
    all.jsonemail 查询字符串参数均未记录,我发现的示例很少,但此帖子似乎表明这是最佳方法。
1 个赞

我没有某些人那么专业,但我认为是的。

在我看来,看起来是正确的。最好、且始终最新的文档是逆向工程 Discourse API

1 个赞