Stiamo utilizzando l’API per integrare Discourse nel nostro sito (tramite pydiscourse).
Quando è il momento di aggiungere un utente a un gruppo Discourse tramite l’API, pydiscourse utilizza il metodo PUT all’URL dell’API di Discourse:
/admin/groups/{group_id}/members.json
…e passa il nome utente tramite la variabile ‘usernames’.
Se il nome utente contiene un “.” al suo interno, non c’è problema, a meno che quel “.” non appaia come ultimo carattere, nel qual caso l’API restituirà un errore con il messaggio:
Hai fornito parametri non validi alla richiesta: usernames
Un nome utente non può terminare con un punto, quindi questa è la risposta prevista. Stavo per controllare la fonte, ma puoi provare a creare un account qui con un punto finale ed è illegale.
Grazie per la rapida risposta, Jay. Sai per caso se l’email dell’utente può essere inviata per ‘username’ in quell’endpoint API, in modo che Discourse sappia come cercare l’utente tramite email? (Utilizziamo l’SSO per collegare la nostra app Django a Discourse, quindi Discourse dovrebbe avere entrambi gli identificatori per ciascun utente)
Oh! Sì, lo so. L’altro giorno ho notato che puoi usare l’indirizzo email per l’endpoint che aggiunge un utente a un gruppo. Potrebbe essere stato il percorso non amministratore, però. Includi semplicemente l’email come nome del campo con l’indirizzo.
Se stai usando Discourse connect, allora puoi avere i gruppi gestiti al login, che è probabilmente quello che vuoi fare piuttosto che preoccuparti dell’API.
A proposito, hai menzionato Potrebbe essere stato il percorso non amministratore, però
Quindi quella richiesta PUT sarebbe:
/groups/{group_id}/members.json
…con 'email': (email dell'utente) come payload… e Discourse sa semplicemente che il mio utente ha i diritti di amministratore per poter aggiungere quell’utente a quel gruppo?
(…scusa, non mi è chiaro perché ci siano due percorsi per la stessa operazione…)
Penso di sì. Ho usato How to reverse engineer the Discourse API per capire il percorso. E poi, immagino, ho guardato il codice sorgente per vedere che funzionano anche l’ID utente e l’indirizzo email.
Sì, l’SSO aggiorna i gruppi solo al momento del login, quindi l’API è la tua soluzione.