新实施的 api_username 限制?

在我们的应用中,我们使用一个全局 API 密钥供所有用户使用。此前,当用户未登录时,我们使用一个虚拟用户名(不存在的用户)anonymous 来表示上下文。这一做法在过去 3 年多里一直有效,直到 2020 年 10 月 25 日美国中部时间凌晨 12:39 出现问题。

今天我通过创建一个具有该用户名的用户来缓解此问题。请问本周末是否推出了新的限制?或是 API 进行了更新?

这导致所有公开用户无法查看评论,因此非常希望能得到解答。

谢谢,

Justin

这是错误信息……

我不清楚最近有什么变更会导致这种行为改变。我原以为它一直都是这样工作的(如果找不到用户则显示错误)。这是检查是否能从 API 凭据中读取用户名的代码:

下面的 user 将为 nil,因为它不存在,这会在第 131 行引发上述错误消息。

23 天前确实进行了一次更新,但它不适用于您的情况,而且无论如何返回的错误消息也不同。

为了再次确认,我将本地的 Discourse 配置为使用一年前的 这个提交,在使用不存在的用户时,我得到了相同的错误。

这件事的一个好处是,我们现在有了 API 作用域。因此,如果用户只需要 read 访问权限,您可以更新该 API 密钥,使其不再是一个拥有全部访问权限的密钥。

如果是公开站点,那么您应该可以直接从后端发起这些请求,无需任何身份验证即可获取匿名视图。如果速率限制成为问题,那么是的,您需要使用一个真实的虚拟用户。

另外我刚刚想到一点,关于 revoke api keys days 这个站点设置。由于该用户不存在,我们从未更新该密钥的最后使用时间,我猜该密钥可能已被自动撤销?不过,我仍然不确定你最初是如何能够发出有效请求的。