Reimposta avatar in sincronizzazione SSO

Sto cercando di resettare l’avatar mentre uso sync_sso (tornando all’uso di letter_avatar_proxy). Attualmente sto passando avatar_force_update=true e nessun valore per avatar_url. Dovrei passare invece un valore esplicito (null?) per avatar_url? Grazie in anticipo.

Dall’analisi del codice SSO di Discourse, non credo sia possibile reimpostare l’avatar di un utente su un avatar a lettera chiamando sync_sso. Il codice tenta di scaricare l’avatar dall’URL passato tramite il parametro avatar_url. Se tale parametro viene omesso, impostato su null o lasciato vuoto, non verrà apportata alcuna modifica all’avatar dell’utente.

Come potrei richiedere all’API di fare una cosa del genere? Ho provato a implementare una soluzione alternativa, ma non sta funzionando del tutto.

Un buon approccio per capire quale chiamata API effettuare per eseguire un’azione è eseguire l’azione tramite l’interfaccia utente di Discourse mentre si osserva la scheda “Network” dello strumento di sviluppo del browser per trovare i dettagli della richiesta in corso. Consulta Come fare reverse engineering dell’API di Discourse per ulteriori dettagli su questo metodo.

Le immagini profilo degli utenti possono essere aggiornate all’avatar di sistema effettuando una richiesta API PUT a

http://forum.example.com/u/<discourse_username>/preferences/avatar/pick

Imposta type=system nei dati del modulo della richiesta. Dovrai sostituire l’URL del tuo forum e il nome utente Discourse che desideri aggiornare nell’URL.

Ecco un esempio di richiesta curl dal mio sito locale. Ho impostato $api_key sulla mia chiave API “Tutti gli utenti”:

curl -X PUT "http://localhost:3000/u/scossar/preferences/avatar/pick" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-H "Content-Type: multipart/form-data;" \
-F "type=system"

Da notare che questa richiesta fallirà se hai abilitato l’impostazione del sito sso overrides avatar.

Stranamente, questo è l’ workaround che ho provato, ma ho riscontrato risultati incoerenti. Ci lavorerò ancora un po’ e farò rapporto.