E-Mail-Adresse eines Benutzers über API abrufen

Gibt es eine Möglichkeit, über die API die aktuelle E-Mail-Adresse eines Benutzers abzurufen?

Unser Anwendungsfall sieht wie folgt aus:

Wir ermöglichen es Benutzern, ihre Discourse-Informationen über unsere Website zu verwalten. Im Allgemeinen wird Discourse nur als Mailingliste genutzt, und fast alle Benutzer besuchen die eigentliche Discourse-Website nie. Ich möchte dem Benutzer die aktuelle E-Mail-Adresse anzeigen können, die Discourse verwendet, damit er sehen kann, ob sie geändert werden muss.

Ich kann dies für alle anderen Felder außer der E-Mail-Adresse durchführen.

Früher gab es einen API-Endpunkt users/{username}/emails, der jedoch scheinbar nicht mehr verfügbar ist.

Hi,

GET /users/:username.json

will display the email in two cases:

  • the user id of the API KEY holder is the same than the user id related to the requested username
  • the API KEY holder is staff and the requested user is staged

Read more about this in code:

AFAIK this codepath has not changed recently.

3 „Gefällt mir“

Yeah, but that doesn’t help me. All of the users are already active and the user API key is not going to match.

This request does work for me:

curl "http://example.com/users/joffreyjaffeux/emails.json" \
     -H 'Api-Username: joffreyjaffeux' \
     -H 'Api-Key: xxx' \
     -H 'Content-Type: application/json; charset=utf-8' \
3 „Gefällt mir“

But, does it work if the URL is http://example.com/users/paulapostolos/emails.json ?

Yes it should work for yourself and other users as long as this is true:

  def can_check_emails?(user)
    is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
  end

Note that doing so will trigger a staff action log.

4 „Gefällt mir“

That worked…I had some old code that used to work (version 1.4 ish) that had the request as a PUT and without the .json at the end. I modified it to a GET and changed the URL and now it works.

Thanks for the help!

3 „Gefällt mir“