xbd
1
Discourse API Docs (Discourse API Docs) によると、参照されているエンドポイント経由でメールを変更できるはずです。
- このAPIエンドポイントを使用します: PUT /u/{username}.json
- このリクエストボディを使用します:
{
"Name": "Test Name",
"Email": "test@test.com"
}
- 200 OK を受信しました。名前は変更されますが、メールは変更されません。
レスポンスには「email」フィールドが含まれていません。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
Discourse APIをリバースエンジニアリングして、どのAPI呼び出しを使用するか確認することをお勧めします。Reverse engineer the Discourse API
「いいね!」 2
Canapin
(Coin-coin le Canapin)
3
xbd様
ドキュメントによると、メールの変更には /u/{username}/preferences/email.json エンドポイントを使用します: https://docs.discourse.org/#tag/Users/operation/updateEmail
ただし、変更後のメールアドレスに確認リンクが送信され、ユーザーによる手動承認が必要になります。それまではメールアドレスは変更されません。
「いいね!」 5
xbd
4
ご協力ありがとうございます。ドキュメントのPUT /u/{username.json}からemailプロパティを削除すると役立つかもしれません。デバッグに費やす時間を節約できるかもしれません ;-).\n\n確認メールに関する件ですが、別のトピックで読みました。その意図が理解できません。念のためですが、Discourseはプロジェクト内の多くのアプリケーションの1つであり、ユーザーの認証はカスタムメイドの認証サーバー(私のケースのように)によって処理されます。認証サーバーがメール確認を処理します。アプリケーションは、認証サーバーが言うことを実行するだけでよいはずです。これは私の意見では通常のやり方です。そうでなければ、複数の確認メール、異なるデータセットなどが生じます。
「いいね!」 2
Canapin
(Coin-coin le Canapin)
5
ご指摘ありがとうございます。これは確かに奇妙です。過去の遺物かもしれません。情報を集めて、必要に応じてドキュメントを更新します。
「いいね!」 2
「認証がメールを上書きする」という管理設定は、これに役立ちますか?
「いいね!」 4
pfaffman
(Jay Pfaffman)
7
その場合、Discourseにメールアドレスが検証済みであることを伝え、APIではなく認証サーバーでメールを更新するように設定する必要があります。
「いいね!」 2
blake
(Blake Erickson)
8
この件について再度ご指摘いただきありがとうございます。また、デバッグに時間を費やさせてしまい申し訳ありませんでした。APIドキュメントは更新されました。
「いいね!」 3