在用户登录discourse时触发在外部服务上的账户创建/登录

我不知道你的技术栈或用例足够多,但我认为我以前解决过类似的问题,有些想法可能对你有用。

我有一个 Next.js 应用程序,我需要客户端拥有一个有效的 JWT 来调用我的后端 API(如果存在 Discourse 会话)。

为此,我使用 Discourse 作为我的身份提供者,通过 DiscourseConnect

在我的例子中,我通过一个客户端 fetch 调用 { credentials: "include" } 来实现这一点,这之所以有效是因为我所有的设置都在同一个域下,并且 fetch 调用会自动跟随重定向。

我的客户端获取一个自定义的 /auth/token,它会检查 _t 的存在(只是为了避免不必要的重定向),然后根据链接主题中的文档,返回一个重定向到安全的 /session/sso_provider URL,该 URL 包含 nonce/sso/sig,以及一个指向自定义 /auth/callbackreturn_sso_url。该回调将提取 Discourse 发送的数据,构建并返回一个 JWT 令牌,我的客户端从此时起可以使用该令牌。

我相信你的用例也可以用类似的方式解决。