举报帖子,API故障

我使用 API 和 Python 来标记某些帖子。这在过去几年中一直有效,直到最近升级到 3.2.0.beta4-dev。现在我收到 DiscourseClientError: You are not permitted to view the requested resource. 我的 API 密钥仍然有效,并未被撤销。手动标记帖子进行逆向工程表明标记的 payload 没有改变(除了 flag_topic 的值可能有所不同,但这似乎并不重要)。有什么想法吗?

       self._post(
            "/post_actions",
            id=post_id,
            post_action_type_id=7, # 标记它
            message=msg,
            flag_topic=True
        )

最近对标记的一个更改是从基于信任级别改为基于组的设置(flag post allowed groups),这是否可能以某种方式相关?

1 个赞

我的设置:

我的 API 密钥:

所以也许“所有用户”不再有标记的权限,我需要一个有权限的“单个用户”(例如我自己)的新 API 密钥?我不清楚“所有用户”是什么意思。TL0?

理论上,由于 TL1 的默认值在设置切换期间保持不变,我认为 API 密钥的权限应该仍然有效,尽管现在它基于组而不是信任级别,可能还有其他因素在起作用。有报告称,在为另一个已迁移到组允许格式的设置出现的另一个怪癖中,组的可见性是一个因素。您是否在任何时候更改过 TL1 组的可见性?

1 个赞

不,所有组都可见。


我也尝试使用新的 API 密钥,这次是针对单个用户“discobot”(我的 webhook 以用户 discobot 身份运行),并且由于 discobot 是 TL0,我将 flag post allowed groups 更改为 TL0。仍然是相同的错误 - 您无权查看所请求的资源。

现在它在将 @discobot 提升到 TL1 后可以正常工作了。我不确定结论是什么——只需确保您的用户同时满足基于信任级别和组的设置。即便如此,我也无法解释为什么它以前可以工作然后又坏了。

1 个赞

嗯。我不确定 :thinking: 不过很高兴现在它能正常工作了。:slight_smile: 我已经联系了做出更改的开发人员,看看是否有更多信息,但既然您已经恢复了运行,我们可能会等待更多报告来深入研究。

嗯,它工作了一小段时间——也许一天。然后 @discobot 再次失去标记功能。需要明确的是,这与 API 无关——如果我冒充 @discobot 并浏览主题,则无法使用标记图标。如果我更改 @discobot 的信任级别——即使是较低的级别——标记图标就会再次出现。我会尝试更好地描述它,但似乎有些问题。

另外,我不知道这个问题是否是 @discobot 特有的。我只是使用 @discobot,因为他是一个用户,你会自然而然地期望他自动标记帖子。而且它已经工作了很多年了。

您可能需要咨询其他用户。有些机制会从信任级别组中移除 Discobot 和 System,因此任何基于这些用户的信任级别组的操作都会产生奇怪的结果(它们目前会在每次更新论坛时重新添加,并在短时间后再次被移除)。

如果您能创建一个特定的测试用户来尝试,结果会更清晰。

1 个赞

好的,我已经创建了一个特定的用户来通过 API 进行标记。看看效果如何……

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.