您好!
我已经在我自行托管的安装上设置了 Discord 登录。它运行得非常好……除了一个小问题。
当用户使用 Discord 登录时,他们每次都会被带到授权页面,这意味着他们每次登录都需要同意授权。根据我的理解,这应该只在他们首次将 Discord 登录与 Discourse 连接时进行一次。
有什么办法可以解决这个问题吗?我遵循了文档。
您好!
我已经在我自行托管的安装上设置了 Discord 登录。它运行得非常好……除了一个小问题。
当用户使用 Discord 登录时,他们每次都会被带到授权页面,这意味着他们每次登录都需要同意授权。根据我的理解,这应该只在他们首次将 Discord 登录与 Discourse 连接时进行一次。
有什么办法可以解决这个问题吗?我遵循了文档。
有人遇到这个问题吗?
是的,我在我的实例上试过,能够重现这个问题。
您在提供“使用 Discord 登录”的其他网站上是否看到相同的行为?如果是这样,这可能是 Discord 登录系统的预期行为,而不是 Discourse 特有的问题。
这不是预期的行为。我使用的其他网站和论坛登录只需要一次验证。之后每次用Discord登录时,都会自动登录,无需通过验证页面。
这与Discourse有关。
你能分享一个公共示例让我们试用并比较实现吗?
我不确定你所说的公共示例是什么意思,抱歉。
不过这并非常态。它只应该在第一次使用时需要进行Discord验证。
我的意思是:
你能分享其中一个的链接吗?然后我们或许可以看看它们是如何实现的,并相应地调整 Discourse。
这是我经常光顾的论坛,但它不是 Discourse 软件。
我不知道这是否是因为身份验证 URL 中缺少 prompt 参数设置为 none?
prompt控制授权流程如何处理现有授权。如果用户先前已授权您的应用程序并请求了范围,并且 prompt 设置为consent,系统将要求他们重新批准授权。如果设置为none,系统将跳过授权屏幕,在不请求其授权的情况下将他们重定向回您的重定向 URI。
您可能发现了问题所在。我找到了这个:
https://community.auth0.com/t/discord-connection-prompts-for-consent-every-login/135157
也许可以在 Discourse 中更新这个?据我所知,这不是我可以在管理面板或 Discord 开发者门户中进行的操作。
Discourse 中有一个用于 Google Auth 的提示设置,我认为添加一个用于 Discord 的设置会比较合理。
我刚刚也注意到了这一点。
你知道这个登录设置的文件在Discourse中安装的位置吗?我在考虑在文件中添加
"upstream_params": {
"prompt": {
"value": "none"
}
},
然后重建,看看是否能修复它。
补充:经过第二次考虑,我觉得我找不到可以实现这一功能的文件。我认为还需要Discourse的修复,才能使其按预期工作。
由于我的实例上存在此问题:
是的,等待团队的消息 ![]()
好的。除了等待更新之外,我还需要做些什么吗?
我猜像这样的修复没有确切的预计完成时间,而且很可能取决于紧急程度。我想这只是一个小麻烦。但如果能修复好就太棒了!
添加 prompt=none 的更改对我来说听起来不错。如果有人能编写、测试并提交 PR,将有助于加快更改。
相关文件将是这个,但我目前不知道具体需要进行哪些更改。
在查看文件时,我添加了
option :authorize_params, prompt: 'none'
在
option :authorize_options, %i[scope permissions]
在我的自托管安装上。
它有点效果……但不是我们想要的。
它仍然会带你到 Discord 授权页面,但是,用户不再需要点击 authorize。页面将重新加载,然后带你回到你的 discourse 页面。
前进了一步,又后退了一步。 ![]()
编辑:我看到 @Arkshine 了,我测试了更改并得到了相同的结果。
即使进行了更改,它仍然会跳转到 Discord 身份验证页面 - 而不应该这样做(尽管这次您无需手动按“authenticate”)。
提交包含建议更改的 PR 遗憾的是无法解决问题。