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
}

* リクエストは読みやすくするために簡略化されています。

ご覧のとおり、ペイロードオプションでは、管理ページでアカウントを手動で削除する際に投稿を削除するのではなく、同じリクエストでユーザーが生成した投稿を削除できます。


しかし、APIキーはグローバルスコープを持ち、ユーザーはsystemであるにもかかわらず、このリクエストで403アクセス拒否エラーが発生しています。

{
  "errors": ["You are not permitted to view the requested resource."],
  "error_type": "invalid_access"
}

ガイドで言及されている設定値を変更すると、機能しますか?デフォルト値では、ユーザーの削除がブロックされる可能性があります。100%確実ではありません。

削除しようとしているユーザーの具体的な詳細についてはわかりませんが、表示されているエラーは、次のいずれかまたは複数のチェックが満たされていないことが原因である可能性が高いです。

最も可能性が高いのは、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_age60 (デフォルト) に設定されており、ユーザーは 60 日よりも古い投稿を持っています。

    最初の投稿が (x) 日よりも古いユーザーの削除を許可しない。

  • delete_all_posts_max15 (デフォルト) に設定されており、私のユーザーは 12 件の投稿を持っています。

    一度に削除できる投稿の最大数。ユーザーがこれよりも多くの投稿を持っている場合、投稿を一度にすべて削除することはできず、ユーザーも削除できません。

制限を解除した後、API呼び出しでユーザーを削除することができました。

{"deleted":true}

:grin:

そして、APIドキュメント にもこの要件について言及した方が良いかもしれませんね。

「いいね!」 1

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