以编程方式发送邀请给用户并完成其个人资料

你好!

我们计划在用户于我们的应用中创建账户后,向他们发送 Discourse 邀请。我们已掌握用户的姓名及社区所需的自定义字段,但用户仍需在 Discourse 上重新输入这些信息。

请问我们是否能在其创建个人资料时自动填充这些字段?

谢谢!

我认为最好的方案是让您的应用充当 SSO 服务器。如果您不希望这样,也可以通过 API 由您的应用创建用户并包含相关设置。您可以参考《如何逆向工程 Discourse API》了解具体操作方法:https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576。

我们不希望通过 API 创建用户,因为我们希望用户自行设置密码并选择用户名。我曾考虑创建包含所有数据的预注册用户,但似乎无法通过 API 实现。

我能想到的另一个方案是扩展邀请功能,以支持自定义字段和个人资料信息。

也许可以开发一个插件,通过 Webhook 或 API 调用从您的应用中拉取字段?您可以让该插件执行类似 get yoursite/user/<email_address> 的操作,并在用户记录更新时填充用户字段。类似这样的方案。不过,SSO 似乎仍然是最佳解决方案。

是的,请查看 https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045。这正是单点登录(SSO)的典型应用场景。

不过,使用 SSO 时,您无需邀请他们。他们只需访问您的 Discourse 实例,如果已登录您的应用,系统便会自动将其登录。如果尚未登录您的应用,Discourse 会将其重定向至您的应用进行登录,随后自动重定向回 Discourse。

问题在于我们使用 Discourse 作为 SSO 提供商,这一直运行良好。不过,我同意,如果 Discourse 能够对接一个 SSO 提供商,情况会更容易。

@blake 我还在思考如何实现这一点,因为我们目前使用 Discourse 作为单点登录(SSO)提供商。我暂时不想迁移到其他方案,因为那会需要大量额外工作。你还有其他建议吗?如果需要编写自定义代码也没问题,但我们希望尽可能减少对现有配置的改动。

谢谢!

我对您的设置以及这两句话感到困惑,因为这样您实际上并没有实现点登录(SSO),而是变成了双点登录?

如果 Discourse 是您的 SSO 提供商,那么新用户应该首先重定向到 Discourse 以创建账户,验证通过后,再重定向回您的应用。这样所有信息都集中在一个地方。

根据我目前的理解,我会将您的应用转换为 SSO 提供商,让 Discourse 来调用它。或者,将您的应用用户先重定向到 Discourse 进行注册,然后再重定向回您的应用,因为显然目前的设置并非如此?

否则,如果您希望采用双点登录设置,可以在用户于您的应用中注册后,通过 API 自动在 Discourse 中为他们创建账户,并设置一个随机密码(该密码永远不提供给用户),同时自动填充他们在您的应用中填写的个人信息。然后,将他们引导至 Discourse 的新账户密码重置页面,而不是发送邀请。

我们通过应用进行注册,但我们的应用没有会话管理功能。我们只是向用户收费并将他们的信息存储在我们的数据库中。

我们需要要求用户先创建账户,而我们要取消的就是这一步,因为我们希望尽可能简化流程。

这是我们不想投入精力的方向,因为添加会话管理、密码恢复、双因素认证以及 Discourse 提供的其他所有功能将需要大量工作。

这不是我们想要的。

这是我最初的做法,但我们不得不设置随机用户名,这并不是我们想要的。虽然这样能行得通,但我们希望用户在使用社区之前仍能个性化他们的账户。

不过,我想答案仍然是使用外部 SSO 提供商。我会走这条路,不再纠结如何让 Discourse 按我们想要的方式工作。

感谢你的帮助 @blake

或者干脆放弃你的应用,让 Discourse Subscriptions 来处理资金事宜?