我正在尝试使用 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 应该是什么。