Ich möchte das Avatar-Image zurücksetzen, während ich sync_sso verwende (und wieder letter_avatar_proxy nutze). Derzeit übergebe ich avatar_force_update=true und keinen Wert für avatar_url. Sollte ich stattdessen einen expliziten (null?) Wert für avatar_url übergeben? Vielen Dank im Voraus.
Nach einer Überprüfung des Discourse SSO-Codes glaube ich nicht, dass es möglich sein wird, das Avatar-Icon eines Benutzers durch Aufrufen von sync_sso auf ein Buchstaben-Avatar zurückzusetzen. Der Code versucht, das Avatar-Icon von der URL herunterzuladen, die mit dem Parameter avatar_url übergeben wird. Wenn dieser Parameter weggelassen wird, auf null gesetzt wird oder eine leere Zeichenkette ist, wird keine Änderung am Avatar-Icon des Benutzers vorgenommen.
Wie könnte ich anfragen, dass die API so etwas tut? Ich habe versucht, einen Workaround zu implementieren, aber er funktioniert nicht ganz.
Ein guter Ansatz, um herauszufinden, welchen API-Aufruf man tätigen muss, um eine Aktion auszuführen, besteht darin, die Aktion über die Discourse-Benutzeroberfläche durchzuführen und gleichzeitig den Netzwerk-Tab des Web-Inspectors zu beobachten, um Details über die getätigte Anfrage zu finden. Weitere Informationen zu diesem Ansatz finden Sie unter So reverse-engineern Sie die Discourse-API.
Benutzer-Avatare können auf den System-Avatar aktualisiert werden, indem eine API-PUT-Anfrage an folgende Adresse gesendet wird:
http://forum.example.com/u/<discourse_username>/preferences/avatar/pick
Setzen Sie type=system in den Formulardaten der Anfrage. Sie müssen die URL Ihres Forums und den Discourse-Benutzernamen, den Sie aktualisieren möchten, in die URL einsetzen.
Hier ist ein Beispiel für eine curl-Anfrage von meiner lokalen Seite. Ich habe $api_key auf meinen API-Schlüssel für alle Benutzer gesetzt:
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"
Ein wichtiger Hinweis: Diese Anfrage schlägt fehl, wenn die Site-Einstellung sso overrides avatar aktiviert ist.
Seltsamerweise ist das der Workaround, den ich versucht habe, aber ich habe inkonsistente Ergebnisse gesehen. Ich werde mich noch etwas damit beschäftigen und mich dann wieder melden.