PUT /u/{username}.json はメールを変更しません

Discourse API Docs (Discourse API Docs) によると、参照されているエンドポイント経由でメールを変更できるはずです。

  1. このAPIエンドポイントを使用します: PUT /u/{username}.json
  2. このリクエストボディを使用します:
{
    "Name": "Test Name",
    "Email": "test@test.com"
}
  1. 200 OK を受信しました。名前は変更されますが、メールは変更されません。

レスポンスには「email」フィールドが含まれていません。

「いいね!」 1

Discourse APIをリバースエンジニアリングして、どのAPI呼び出しを使用するか確認することをお勧めします。Reverse engineer the Discourse API

「いいね!」 2

xbd様

ドキュメントによると、メールの変更には /u/{username}/preferences/email.json エンドポイントを使用します: https://docs.discourse.org/#tag/Users/operation/updateEmail

ただし、変更後のメールアドレスに確認リンクが送信され、ユーザーによる手動承認が必要になります。それまではメールアドレスは変更されません。

「いいね!」 5

ご協力ありがとうございます。ドキュメントのPUT /u/{username.json}からemailプロパティを削除すると役立つかもしれません。デバッグに費やす時間を節約できるかもしれません ;-).\n\n確認メールに関する件ですが、別のトピックで読みました。その意図が理解できません。念のためですが、Discourseはプロジェクト内の多くのアプリケーションの1つであり、ユーザーの認証はカスタムメイドの認証サーバー(私のケースのように)によって処理されます。認証サーバーがメール確認を処理します。アプリケーションは、認証サーバーが言うことを実行するだけでよいはずです。これは私の意見では通常のやり方です。そうでなければ、複数の確認メール、異なるデータセットなどが生じます。

「いいね!」 2

ご指摘ありがとうございます。これは確かに奇妙です。過去の遺物かもしれません。情報を集めて、必要に応じてドキュメントを更新します。:+1:

「いいね!」 2

「認証がメールを上書きする」という管理設定は、これに役立ちますか?

「いいね!」 4

その場合、Discourseにメールアドレスが検証済みであることを伝え、APIではなく認証サーバーでメールを更新するように設定する必要があります。

「いいね!」 2

この件について再度ご指摘いただきありがとうございます。また、デバッグに時間を費やさせてしまい申し訳ありませんでした。APIドキュメントは更新されました。

「いいね!」 3