paully21
(Paul Apostolos)
1
API を通じてユーザーの現在のメールアドレスを取得する方法はありますか?
私たちのユースケースは以下の通りです。
当社のウェブサイトを通じて、ユーザーが Discourse の情報を管理できるようにしています。一般的に、Discourse はメーリングリストとしてのみ使用され、ほとんどのユーザーは実際の Discourse サイトを訪れることはありません。ユーザーに Discourse が現在使用しているメールアドレスを表示し、変更が必要かどうかを確認できるようにしたいと考えています。
メールアドレス以外のすべての項目については、この処理を実行できています。
以前は users/{username}/emails という API エンドポイントが存在していましたが、現在は利用できないようです。
j.jaffeux
(Joffrey Jaffeux)
2
こんにちは、
GET /users/:username.json
は、以下の 2 つのケースでメールアドレスを表示します。
- API キー保有者のユーザー ID が、リクエストされたユーザー名に関連するユーザー ID と一致する場合
- API キー保有者がスタッフであり、リクエストされたユーザーがステージング環境にいる場合
コードの詳細については、こちらをご覧ください:
私の知る限り、このコードパスは最近変更されていません。
paully21
(Paul Apostolos)
3
はい、でもそれは私の役に立ちません。すべてのユーザーはすでにアクティブで、ユーザー API キーが一致しません。
j.jaffeux
(Joffrey Jaffeux)
4
このリクエストは私の環境で動作します:
curl "http://example.com/users/joffreyjaffeux/emails.json" \
-H 'Api-Username: joffreyjaffeux' \
-H 'Api-Key: xxx' \
-H 'Content-Type: application/json; charset=utf-8' \
paully21
(Paul Apostolos)
5
ただし、URL が http://example.com/users/paulapostolos/emails.json の場合でも機能しますか?
j.jaffeux
(Joffrey Jaffeux)
6
はい、以下の条件が満たされていれば、自分自身および他のユーザーに対して機能します。
def can_check_emails?(user)
is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
end
なお、これを実行するとスタッフアクションログが記録されます。
paully21
(Paul Apostolos)
7
それ、うまくいきました…以前は動いていた古いコード(バージョン1.4頃)には、PUTリクエストで末尾に.jsonをつけていなかったものがありました。それをGETに変更し、URLも修正したところ、動くようになりました。
お手伝いいただき、ありがとうございます!