使用 OAuth 的登录流程(Flask -> Discourse -> Flask)

你好!

我有两个相关的问题,希望能得到大家的帮助 :slight_smile:

我已经将我的 Discourse 实例配置为支持通过 Twitter、Facebook 和 Google 进行 OAuth 认证。我想实现的目标如下:

场景 1:

  1. 用户访问 /home(Python/Flask 应用)
  2. 他们想注册一个 Discourse 账号。
  3. 他们被重定向到相应的 OAuth 流程,例如 https://discourse.example.com/auth/google
  4. 他们完成注册后,能否将他们重定向回 /home

场景 2:

  1. 用户访问 /home(Python/Flask 应用)
  2. 他们 已经 拥有 Discourse 账号。
  3. 他们希望通过 OAuth 在主应用中登录,以访问某些受保护的页面。
  4. 他们被重定向到相应的 OAuth 流程。
  5. Discourse 验证其账户凭据后,能否将他们重定向到 /user

如果有任何不清楚的地方,请告诉我,我很乐意进一步说明!

谢谢!

以防您尚未看到,我们的文档位于 https://meta.discourse.org/t/oauth2-basic-support/33879/。这是否包含您正在寻找的一些答案?

感谢回复 @rishabh

不幸的是,据我所知,文档并未涵盖我的问题。我的 OAuth 配置确实按预期工作,只是场景 1 和 2 中概述的额外功能引发了问题。

我正在寻找的是一种类似可选参数 callback_url 的功能,它会在 OAuth 提供商验证用户账户并将其返回 Discourse 后,将用户重定向到其目标 URL。

我想这有点像我的 Discourse 实例本身充当了 OAuth 提供商,服务于我的 Flask/Python 应用?

例如:https://discourse.example.com/auth/google?callback_url=https://example.com/home 会将用户带到 Google,然后返回 Discourse,Discourse 再将其重定向到 callback_url