Ottieni indirizzo e-mail per un utente tramite API

È possibile ottenere l’indirizzo e-mail corrente di un utente tramite l’API?

Il nostro caso d’uso è il seguente:

Permettiamo agli utenti di gestire le loro informazioni su Discourse tramite il nostro sito web. In generale, Discourse viene utilizzato solo come mailing list e quasi tutti gli utenti non visitano mai il sito effettivo di Discourse. Vorrei poter mostrare all’utente l’indirizzo e-mail corrente utilizzato da Discourse, in modo che possa verificare se deve essere modificato.

Riesco a farlo per tutti gli altri campi tranne che per l’e-mail.

In passato esisteva un endpoint API users/{username}/emails, ma sembra che non sia più disponibile.

Ciao,

GET /users/:username.json

mostrerà l’email in due casi:

  • l’ID utente del titolare della chiave API è lo stesso dell’ID utente associato al nome utente richiesto
  • il titolare della chiave API è staff e l’utente richiesto è in staging

Per ulteriori informazioni, consulta il codice:

Per quanto ne so, questo percorso di codice non è cambiato di recente.

Sì, ma questo non mi aiuta. Tutti gli utenti sono già attivi e la chiave API dell’utente non corrisponderà.

Questa richiesta funziona per 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' \

Ma funziona se l’URL è http://example.com/users/paulapostolos/emails.json?

Sì, dovrebbe funzionare per te e per gli altri utenti, purché questa condizione sia vera:

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

Tieni presente che farlo attiverà un registro delle azioni dello staff.

Ha funzionato… Avevo del codice vecchio che funzionava (versione 1.4 circa) con la richiesta come PUT e senza .json alla fine. L’ho modificato in GET e ho cambiato l’URL, e ora funziona.

Grazie per l’aiuto!