是否可以使用系统 API 密钥获取特定用户的“热门”和“最新”话题?

这是我的使用场景:我想在论坛首页展示最新的 5 个和最热门的话题。我需要针对特定的 Discourse 用户进行过滤——例如,我的部分用户可以访问某个私密分类(其中的话题应当出现在最新/最热门列表中),而其他用户则没有此权限。

目前,当我调用 Discourse API 获取所需数据时,我使用的是系统 API 密钥。这返回的结果不仅包含隐藏分类,还会在列表顶部始终显示全局置顶的话题(即使用户早已取消置顶)。

因此,您应该能理解为什么我需要针对特定用户获取最新/最热门话题,而不是整个论坛的范围。

如果通过用户 API 密钥调用能够实现此功能,那将是一个不同的问题——似乎非常笨拙,每次需要为用户检索这些结果时,都必须(通过编程方式)创建一个用户 API 密钥。(而且显然需要在之后立即销毁该密钥,因为我并不需要它用于其他用途。)这是唯一的办法吗?

我提出一个解决方案:如果使用系统 API 密钥调用 latest.json 或 top.json,这些端点可以接受一个可选的用户 ID 参数,以限制返回结果的范围。

如果您创建了一个适用于所有用户的 API 密钥,可以指定该密钥以特定用户身份运行。随后,它将模拟该用户身份。

@sam,太棒了!那么端点是什么呢?我确实有一个所有用户的系统 API 密钥。

正常的端点,可以获取所有最新且未过滤的数据:

/latest.json

我尝试过的用户特定端点,但都不起作用(其中 username 是我论坛中的用户名):

/username/latest.json
/latest/username.json
/username/latest
/latest/username
/latest/4.json(使用用户 ID 代替用户名)
等等。

我似乎找不到它 :-\

您应在 Api-Username 中指定用户名,如上述文档中的示例所示。

啊哈,明白了。我现在懂了。