通过 discourse API 删除用户

用户账户也可以通过 Discourse API 删除。

例如;

DELETE /admin/users/{id}.json HTTP/1.1

Content-Type: application/json
Api-Username: system
Api-Key: 1234*******

{
  "delete_posts": true,
  "block_email": false,
  "block_urls": false,
  "block_ip": false
}
  • 为便于阅读,已简化请求。

如您所见,与在管理页面手动删除账户时先删除帖子再删除账户不同,载荷选项允许在同一请求中删除用户生成的帖子。


但是,我收到了一个 403 访问被拒绝错误,尽管 API 密钥具有全局范围,并且用户是 system

{
  "errors": ["您无权查看所请求的资源。"],
  "error_type": "invalid_access"
}

如果您更改指南中提到的设置的值,它是否有效?默认值可能会阻止用户删除。不完全确定。

我不确定您要删除的用户的具体信息,但您看到的错误很可能源于以下一项或多项检查未能满足。\n\n[quote="Discourse, post:1, topic:312021"]\n### 重要设置:\n\n* delete_user_max_posts:确定用户账户有资格删除的最大帖子数。例如,如果设置为 5,则帖子数超过 5 的用户无法被删除。\n* delete_user_max_post_age:用户首次发帖以来的天数,在此期间用户可以被删除。例如,将其设置为 30 意味着帖子超过 30 天的用户无法被删除。\n* delete_all_posts_max:使用“删除所有帖子”按钮一次可以删除的最大帖子数。例如,将其设置为 100 会将批量删除限制为一次 100 篇帖子。\n[/quote]\n\ndiscourse/lib/guardian/user_guardian.rb at f0d6e9758dda7efd214d054f6755d31a14db3338 · discourse/discourse · GitHub else 块中的某些内容。是的,我同意,错误消息确实可以不那么含糊 :grimacing:

4 个赞

说得对 @selase!看来我的用户拥有的帖子数量超过了 User::MAX_STAFF_DELETE_POST_COUNT,而且有些帖子的时间比 SiteSetting.delete_user_max_post_age 还早 :slight_smile:

  • delete_user_max_posts:自文章发布以来,它一定被重命名为 delete_user_self_max_post_count。它被设置为 1(默认值)

    用户在允许自助删除账户的情况下可以拥有的最大帖子数。设置为 -1 可禁用自助删除账户。

  • delete_user_max_post_age 被设置为 60(默认值),并且该用户有超过 60 天的帖子。

    不允许删除其第一篇帖子早于 (x) 天的用户的帖子。

  • delete_all_posts_max 被设置为 15(默认值),而我的用户有 12 篇帖子

    使用“删除所有帖子”按钮一次可以删除的最大帖子数。如果用户拥有的帖子数量超过此数量,则无法一次性删除所有帖子,也无法删除该用户。

一旦我消除了这些限制,我就能够通过 API 调用删除我的用户。

{"deleted":true}

:grin:

也许 API 文档 也可以提及这个要求?

1 个赞

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