通过 webhook 添加用户到组(带电子邮件)

您好,

我正尝试通过 webhook 将 WordPress 用户添加到 Discourse 中的私有群组。

我使用 WP Discourse 插件作为 SSO 登录方法,并且不允许用户在 Discourse 中更改其用户名。我这样做是因为我认为这样就可以使用 WordPress 中的用户名将他们添加到 Discourse 中的群组。因为,我认为它们会是相同的。

问题是,当 WordPress 自动生成用户名时,有时会使用用户的电子邮件作为用户名。但是 Discourse 不允许在用户名中使用“@”,因此会在“@”处中断用户名。

示例:
WordPress 电子邮件:jhon@gmail.com
WordPress 用户名(自动生成):jhon@gmail.com
Discourse 用户名(通过 WP Discourse SSO 生成):jhon

这使得我无法使用 WordPress 用户将他们添加到群组。

有没有更简单的方法来实现这一点?

如果能够通过电子邮件而不是用户名将用户添加到群组,那就太好了。电子邮件在任何应用程序(CRM、WordPress 等)中始终可用,因此无需进行额外的“GET”请求到 API 来获取该电子邮件的用户名,然后再将他们放入群组。

我使用 Fluent Forms 在用户发送表单时将此数据发送到 WordPress 的 webhook,因此我无法执行 GET 请求然后 PUT 用户名。

谢谢!

1 个赞

如果我理解正确的话,您正在做以下操作:

  1. 使用 DiscourseConnect,其中 WordPress 作为提供者,Discourse 作为客户端。
  2. 在 WordPress 中使用 Webhook,在表单操作的结果中将用户添加到 Discourse 中的群组(例如,PUT 到 /g/:group_name/membersAPI 参考))。

如果以上正确,您可以在 WordPress 中通过 discourse_username 用户元字段找到 Discourse 用户名,所以:

get_user_meta($user_id, 'discourse_username', true);

使用该用户名在表单操作后用于 PUT 请求。

您可以使用 WP Discourse 插件中的用户 Webhook 来确保您的用户已填入 discourse_username(请注意,我们讨论的 Webhook 与您当前在表单中使用的 Webhook 不同)。

2 个赞