无法使用 Facebook 登录 Discourse ID

我在 meta.discourse.org 上看到了横幅,上面说我的 Facebook 社交登录将被移除,并建议我切换到 Discourse ID。因此,我点击了 Discourse ID 的链接并尝试使用 Facebook 登录,但失败了。

看起来您的 Facebook 设置不正确。由于 Facebook 登录目前还无法使用,我认为你们应该延长 11 月 30 日的截止日期。

功能不可用

由于我们正在更新此应用的更多详细信息,Facebook 登录目前对此应用不可用。请稍后再试。

2 个赞

谢谢你的报告,Dan。我能够使用我的 Facebook 账户登录,但我注意到应用审核流程已经改变,所以我提交了审核请求。我们的 Facebook 应用不做任何特殊的事情,它只支持通过 Facebook 登录,但尽管如此,Meta (Facebook) 仍需要进行审核。希望他们能尽快完成。

我们将根据审核进展情况,考虑在此处延长 Meta 的截止日期。

2 个赞

Facebook 登录的一个常见陷阱是,它适用于在 Facebook 的管理员设置中列为 Facebook 应用“开发者”的用户,但对普通公众无效。

我相信您可以通过遵循 Facebook 的 Facebook 登录测试指南来重现此问题。

1 个赞

好建议,谢谢。我刚照做了,并用一个临时账户(不是应用程序的管理员或开发人员)登录。看到了这个屏幕:

1 个赞

现在工作得好了一点,但仍然不太对劲。我认为您将重定向 URL 设置错了。

重现步骤:

  • 前往 id.discourse.com(如果已登录,请先退出)
  • 点击 id.discourse.com 主页上的“登录”
  • 点击“Facebook”
  • 现在它会提示输入姓名和电子邮件,或者,如果您已使用 Facebook 登录过,“您之前已使用 Facebook 登录 Discourse Login (Discourse ID)。您想继续吗?”
  • 点击“继续,使用 [姓名]”
  • 它会将您重定向到此页面 <Discourse Meta> 上的 meta.discourse.org(而不是 id.discourse.com!),该页面显示:“抱歉,授权已超时,或者您已更换浏览器。请重试。”

如果我按照那些步骤操作,我会进入 id.discourse.com 的主页,我不会被重定向到 meta。我会登录到 ID 并显示 ID 主页。

除非,:思考:你那里还残留着之前尝试登录 meta 的痕迹……你能在不同的浏览器上重现这个问题吗?

我在 macOS 26.1 上。我在 Chrome 142.0 中重现了此 bug,但在 Safari 26.1 中没有。

在 Chrome 开发者工具中,我看到以下内容,其中一些敏感部分(codestate 参数)已替换为 REDACTED

然后我最终到达 https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id 200 OK :roll_eyes:

3 个赞

好的,我可以在特定条件下重现此问题,我认为我明白发生了什么。

当用户从 meta 开始身份验证时,我们会将 destination_url 的值存储在 ID 实例中,以便在身份验证后,用户可以返回到他们之前的位置。但是,当身份验证未在短时间内完成时(失败或用户放弃身份验证),该 destination_url 不会被清理,它会保留在用户的浏览器会话中。下次用户尝试登录时,ID 会尝试重定向到该 URL,但由于它具有原始身份验证流程中的旧代码/状态组合,因此重定向会导致“抱歉,授权已超时”错误。

在短时间后不应进行任何重定向,我们需要确保 destination_url 的值在 10 分钟后被清理掉,我相信身份验证的代码/状态组合仅在 10 分钟内有效,需要仔细检查。

3 个赞