Wir haben eine Discourse-Forum-App, die über SSO mit unserer App verbunden ist. Benutzer-Avatare werden direkt darüber aktualisiert. Da unsere Fotos jedoch moderiert werden, müssen wir die Benutzer-Avatare auf der Discourse-App-Seite zurücksetzen.
Ist dies über die REST-API oder durch Erweiterungen des SSO-Mechanismus möglich? Ich konnte diese Information in der Dokumentation nicht finden.
Sie sollten die sync_sso-Route aufrufen können, um den Benutzer-Avatar erneut zu synchronisieren. Alternativ können Sie eine PUT-Anfrage an http://localhost:3000/u/<username>/preferences/avatar/pick mit einer leeren upload_id senden.
Hier ist ein Ruby-Code-Beispiel, das die discourse_api-Gemeinde verwendet, damit du es als Referenz nutzen kannst. Der sync_sso-Endpunkt unterscheidet sich etwas von anderen Endpunkten, da du ihm eine signierte Nutzlast senden musst.
Ich habe versucht, die oben beschriebene Anfrage durchzuführen POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=..., und sie hat mit 200 und meinem Benutzer geantwortet, aber das Benutzer-Avatar wurde nicht aktualisiert, ohne dass Log-Ereignisse entstanden sind. Was mache ich falsch?
Sie sollten den api_key und den api_username im HTTP-Header angeben, da die Verwendung in den Abfrageparametern veraltet ist.
Ich vermute, dass es im Code einen Schutzmechanismus gibt, der versehentliches Löschen eines Avatars verhindert, wenn das Feld fehlt oder leer ist. Sie müssen höchstwahrscheinlich eine URL zu einem Standard-Avatar angeben, um den bestehenden Avatar zu ersetzen.
Ich habe API-Anmeldedaten durch Header ersetzt. Die SSO-Synchronisation hat das Benutzer-Avatar nicht mit dem bereitgestellten aktualisiert. Obwohl der Sidekiq-Job in diesem Aufruf erfolgreich abgeschlossen wurde, gab es keine Fehler- oder Warnmeldungen in den Logs.