停止 Discord 在每次登录时提示授权

您好!

我已经在我自行托管的安装上设置了 Discord 登录。它运行得非常好……除了一个小问题。

当用户使用 Discord 登录时,他们每次都会被带到授权页面,这意味着他们每次登录都需要同意授权。根据我的理解,这应该只在他们首次将 Discord 登录与 Discourse 连接时进行一次。

有什么办法可以解决这个问题吗?我遵循了文档

3 个赞

有人遇到这个问题吗?

2 个赞

是的,我在我的实例上试过,能够重现这个问题。

2 个赞

您在提供“使用 Discord 登录”的其他网站上是否看到相同的行为?如果是这样,这可能是 Discord 登录系统的预期行为,而不是 Discourse 特有的问题。

这不是预期的行为。我使用的其他网站和论坛登录只需要一次验证。之后每次用Discord登录时,都会自动登录,无需通过验证页面。

这与Discourse有关。

你能分享一个公共示例让我们试用并比较实现吗?

我不确定你所说的公共示例是什么意思,抱歉。

不过这并非常态。它只应该在第一次使用时需要进行Discord验证。

我的意思是:

你能分享其中一个的链接吗?然后我们或许可以看看它们是如何实现的,并相应地调整 Discourse。

这是我经常光顾的论坛,但它不是 Discourse 软件。

https://famiboards.com/

1 个赞

我不知道这是否是因为身份验证 URL 中缺少 prompt 参数设置为 none

prompt 控制授权流程如何处理现有授权。如果用户先前已授权您的应用程序并请求了范围,并且 prompt 设置为 consent,系统将要求他们重新批准授权。如果设置为 none,系统将跳过授权屏幕,在不请求其授权的情况下将他们重定向回您的重定向 URI。

1 个赞

您可能发现了问题所在。我找到了这个:
https://community.auth0.com/t/discord-connection-prompts-for-consent-every-login/135157
也许可以在 Discourse 中更新这个?据我所知,这不是我可以在管理面板或 Discord 开发者门户中进行的操作。

2 个赞

Discourse 中有一个用于 Google Auth 的提示设置,我认为添加一个用于 Discord 的设置会比较合理。

1 个赞

我刚刚也注意到了这一点。

你知道这个登录设置的文件在Discourse中安装的位置吗?我在考虑在文件中添加

"upstream_params": {
			"prompt": {
				"value": "none"
			}
		},

然后重建,看看是否能修复它。

补充:经过第二次考虑,我觉得我找不到可以实现这一功能的文件。我认为还需要Discourse的修复,才能使其按预期工作。

由于我的实例上存在此问题:

是的,等待团队的消息 :+1:

1 个赞

好的。除了等待更新之外,我还需要做些什么吗?

我猜像这样的修复没有确切的预计完成时间,而且很可能取决于紧急程度。我想这只是一个小麻烦。但如果能修复好就太棒了!

添加 prompt=none 的更改对我来说听起来不错。如果有人能编写、测试并提交 PR,将有助于加快更改。

相关文件将是这个,但我目前不知道具体需要进行哪些更改。

2 个赞

在查看文件时,我添加了

option :authorize_params, prompt: 'none'

option :authorize_options, %i[scope permissions]

在我的自托管安装上。
它有点效果……但不是我们想要的。
它仍然会带你到 Discord 授权页面,但是,用户不再需要点击 authorize。页面将重新加载,然后带你回到你的 discourse 页面。
前进了一步,又后退了一步。 :melting_face:
编辑:我看到 @Arkshine 了,我测试了更改并得到了相同的结果。

1 个赞

我做了一个快速测试(https://discourse.arkshine.dev/):

它显示了身份验证页面,但会自动重定向。

1 个赞

即使进行了更改,它仍然会跳转到 Discord 身份验证页面 - 而不应该这样做(尽管这次您无需手动按“authenticate”)。

提交包含建议更改的 PR 遗憾的是无法解决问题。