使用 API 无法检索帖子

我正在尝试使用 Discourse API 来创建包含特定标签的所有帖子(仅限首帖)的列表。到目前为止,我只能获取最新的帖子,这会检索大约 40 个帖子,包括评论。当我尝试检索特定的帖子 ID 时,有些帖子成功了,但有些我收到了响应
{'errors': ['You are not permitted to view the requested resource.'],'error_type': 'invalid_access'}
即使我使用的 API 密钥拥有对我们 Discourse 上所有帖子的管理员访问权限。有人遇到过这个问题吗?

1 个赞

可以分享一下您的代码片段吗?(不包含 API 密钥)

您能看出其中哪些有效、哪些无效的模式吗?

1 个赞

您好 @RGJ,我注意到如果帖子最初是从 posts.json 中检索到的,我就可以检索到单个帖子。我使用了下面的代码片段

url = "https://forum.algovera.ai/posts.json"

username = "algovera"

params = {'Api-Key': api_key, "Api-Username": username}

r = requests.get(url = url, params = params)

data = r.json()

然后我尝试将此调用更改为 https://forum.algovera.ai/posts/{id}.json\",其中 ID 是从我正在查看的特定帖子的 URL 中获取的。

URL中的数字不是ID,那是帖子编号,相对于主题ID而言。
如果你想获取帖子ID,可以从主题json中检索,路径为 post_stream.posts[].id

所以这个主题中的帖子有:

主题ID 帖子编号 ID
255455 1 1241013
255455 2 1241026
255455 3 1241056

你在这个主题中最新的帖子是 https://meta.discourse.org/posts/1241056.json

1 个赞

好的,谢谢。那样奏效了,那么如果我想检索最新主题以及每个主题的第一篇帖子的原始文本,我需要调用什么?我在文档中看到了“List Topics”调用,但不确定 slug 应该是什么。