Wir integrieren Discourse in die Php/Laravel-Plattform, auf der wir SSO implementiert haben. Das benutzerdefinierte Bild der Benutzer wird nur einmal aktualisiert. Wenn ich jedoch das Profilbild auf der Laravel-Plattform ändere, wird das benutzerdefinierte Bild auch nach erneutem Ab- und Anmelden nicht mehr in Discourse aktualisiert.
Auch wenn ich ‘avatar_force_update’ als true übergeben habe, wird das benutzerdefinierte Avatarbild nicht überschrieben.
Ich kann sehen, dass die Profilbild-URL den SSO-Datensatz aktualisiert hat. Das neue Profilbild wird jedoch in Discourse nicht angezeigt, selbst nachdem ich mich ab- und wieder angemeldet habe.
Vielen Dank für Ihre Antwort. Wenn ich den Browser neu lade, im Inkognitomodus öffne oder mich sogar abmelde und wieder anmelde, wird er nicht aktualisiert.
Wie erwähnt, wird er nur beim ersten Mal aktualisiert. Zum Beispiel:
Ein neuer Benutzer hat einen Avatar und verbindet sich zum ersten Mal mit Discourse über SSO, der Avatar wird aktualisiert.
Oder ein Benutzer hat anfangs keinen Avatar und aktualisiert seinen Avatar auf der Plattform, und in diesem Fall wird er in Discourse widergespiegelt.
Aber ein Benutzer hat einen Avatar und wenn er einen neuen Avatar auf der Plattform aktualisiert, wird er in Discourse nicht aktualisiert, auch wenn ich mich erneut ab- und wieder anmelde oder es in einem anderen Browser versuche. Ich kann sehen, dass die URL des Profilbildes im SSO-Datensatz aktualisiert wurde, aber der Avatar wird nicht aktualisiert.
Sie können versuchen, die ausführliche Protokollierung zu aktivieren und die Protokolle zu überprüfen, um zu sehen, ob das SSO-System die Avatarinformationen sendet.
Es könnte sich lohnen, die Einstellung discourse connect overrides avatar zu aktivieren, sich von Discourse abzumelden und dann wieder anzumelden. Ich bin ziemlich sicher, dass erwartet wird, dass der Avatar auch ohne diese Einstellung aktualisiert werden kann, solange der Parameter avatar_force_update im SSO-Payload auf true gesetzt ist. Der Code, der dies behandelt, ist jedoch ziemlich komplex: discourse/app/models/discourse_connect.rb at 2ff3f44b957268718e03554fb25d485e1d449ed5 · discourse/discourse · GitHub.
Wenn Sie diese Einstellung nicht aktivieren können oder einfach nur neugierig sind, was vor sich geht, sollten Sie noch prüfen, ob der Wert, den Sie für den Parameter avatar_force_update übergeben, von Discourse als boolescher Wert true interpretiert wird. Es gibt Frameworks (insbesondere WordPress), bei denen boolesche Werte in 0 oder 1 umgewandelt werden. Um dieses Problem zu umgehen, akzeptiert Discourse den String \"true\" als booleschen Wert im SSO-Payload. Sie können dies wahrscheinlich bestätigen, indem Sie sich den Wert des Feldes avatar_force_update im SSO-Datensatz ansehen, der auf der Admin-Seite des Benutzers angezeigt wird. Oder indem Sie die von Jay erwähnte Einstellung für detaillierte Protokollierung aktivieren.