Obtén la dirección de correo electrónico de un usuario mediante API

¿Existe alguna forma de obtener la dirección de correo electrónico actual de un usuario a través de la API?

Nuestro caso de uso es el siguiente:

Permitimos que los usuarios gestionen su información de Discourse a través de nuestro sitio web. En general, Discourse se utiliza únicamente como lista de correo y casi ningún usuario visita el sitio real de Discourse. Quiero poder mostrar al usuario la dirección de correo electrónico actual que está utilizando Discourse para que pueda ver si necesita ser cambiada.

Puedo hacer esto con todos los demás campos excepto el correo electrónico.

Antes existía un punto final de API users/{username}/emails, pero parece que ya no está disponible.

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 Me gusta

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 Me gusta

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 Me gusta

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 Me gusta