通过 Discourse API 下载用户的发帖历史?

您好,

为履行我们的法律义务,我们需要一种通过 Discourse API 允许用户下载其完整发帖历史(而非摘要)的方法,以便在用户直接向我们的网站或法律团队提出数据主体访问请求(DSAR)时,能够将其纳入数据范围(从而获得其 Last.fm 数据和 Discourse 发帖数据的完整记录)。目前是否支持此功能?如果支持,正确的实现方式是什么?

我们曾尝试使用“获取用户行为”接口(Discourse API Docs

我们了解到用户已可直接从 Discourse 的活动设置页面下载其数据,但恐怕这不足以令我们的法律团队满意(翻白眼)——他们坚持要求数据必须从我们的网站下载。不知有何建议?我们担心若无法解决此问题,可能不得不终止当前的托管计划。

提前感谢您的任何帮助。:thinking:

1 个赞

嗯,你理论上可以通过 API 来实现(参见如何逆向工程 Discourse API),但无法绕过这一要求:用户必须点击邮件验证链接,以保护他们免受他人下载其数据的风险。

1 个赞

正如 Jay 所指出的,向 /export_csv/export_entity.json 发送经过身份验证的 POST 请求可用于生成归档文件。为此,您需要使用“所有用户”全局 API 密钥。将请求的 API 用户名设置为要为其创建归档的用户名。您还需要在请求中提供 entity 参数,并将其值设置为 user_archive。采用此方法时,系统会为该用户生成一条通知。对于大多数用户而言,这还会向他们发送一封包含下载链接的电子邮件,但我不认为这可以完全依赖——这取决于用户如何配置其邮件偏好设置。

以下是生成归档文件的 curl 请求示例。我在请求中将 $api_key 替换为“所有用户”全局 API 密钥:

curl -X POST "http://localhost:3000/export_csv/export_entity.json" -H "Api-Username: Ben" -H "Api-Key: $api_key" -F "entity=user_archive"

我不确定是否有办法生成归档文件,使其无需用户访问通知并点击下载链接即可直接共享。也许可以开发一个 Data Explorer 查询来返回所需信息,然后通过 API 运行该查询。这种方法的缺点是,如果查询返回的数据行数超过 10,000 行,则需要多次请求才能获取全部数据。有关 Data Explorer 方法的更多详细信息,请参阅:如何使用 Discourse API 运行 Data Explorer 查询

3 个赞

谢谢,我会将这条信息转发给我们的开发团队——希望我们能不太费力地解决这个问题。:crossed_fingers:

1 个赞