我在 meta.discourse.org 上看到了横幅,上面说我的 Facebook 社交登录将被移除,并建议我切换到 Discourse ID。因此,我点击了 Discourse ID 的链接并尝试使用 Facebook 登录,但失败了。
看起来您的 Facebook 设置不正确。由于 Facebook 登录目前还无法使用,我认为你们应该延长 11 月 30 日的截止日期。
功能不可用
由于我们正在更新此应用的更多详细信息,Facebook 登录目前对此应用不可用。请稍后再试。
我在 meta.discourse.org 上看到了横幅,上面说我的 Facebook 社交登录将被移除,并建议我切换到 Discourse ID。因此,我点击了 Discourse ID 的链接并尝试使用 Facebook 登录,但失败了。
看起来您的 Facebook 设置不正确。由于 Facebook 登录目前还无法使用,我认为你们应该延长 11 月 30 日的截止日期。
功能不可用
由于我们正在更新此应用的更多详细信息,Facebook 登录目前对此应用不可用。请稍后再试。
谢谢你的报告,Dan。我能够使用我的 Facebook 账户登录,但我注意到应用审核流程已经改变,所以我提交了审核请求。我们的 Facebook 应用不做任何特殊的事情,它只支持通过 Facebook 登录,但尽管如此,Meta (Facebook) 仍需要进行审核。希望他们能尽快完成。
我们将根据审核进展情况,考虑在此处延长 Meta 的截止日期。
Facebook 登录的一个常见陷阱是,它适用于在 Facebook 的管理员设置中列为 Facebook 应用“开发者”的用户,但对普通公众无效。
我相信您可以通过遵循 Facebook 的 Facebook 登录测试指南来重现此问题。
现在工作得好了一点,但仍然不太对劲。我认为您将重定向 URL 设置错了。
重现步骤:
如果我按照那些步骤操作,我会进入 id.discourse.com 的主页,我不会被重定向到 meta。我会登录到 ID 并显示 ID 主页。
除非,:思考:你那里还残留着之前尝试登录 meta 的痕迹……你能在不同的浏览器上重现这个问题吗?
我在 macOS 26.1 上。我在 Chrome 142.0 中重现了此 bug,但在 Safari 26.1 中没有。
在 Chrome 开发者工具中,我看到以下内容,其中一些敏感部分(code 和 state 参数)已替换为 REDACTED:
/auth/failure?message=csrf_detected&strategy=discourse_id然后我最终到达 https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id 200 OK ![]()
好的,我可以在特定条件下重现此问题,我认为我明白发生了什么。
当用户从 meta 开始身份验证时,我们会将 destination_url 的值存储在 ID 实例中,以便在身份验证后,用户可以返回到他们之前的位置。但是,当身份验证未在短时间内完成时(失败或用户放弃身份验证),该 destination_url 不会被清理,它会保留在用户的浏览器会话中。下次用户尝试登录时,ID 会尝试重定向到该 URL,但由于它具有原始身份验证流程中的旧代码/状态组合,因此重定向会导致“抱歉,授权已超时”错误。
在短时间后不应进行任何重定向,我们需要确保 destination_url 的值在 10 分钟后被清理掉,我相信身份验证的代码/状态组合仅在 10 分钟内有效,需要仔细检查。