Wie kann ich die Sprache für einen angemeldeten Benutzer über SSO festlegen? Ich habe versucht, den Schlüssel „locale“ zu verwenden, wenn der Benutzer zum ersten Mal zugreift, aber es hat nicht funktioniert. Ich glaube, der Schlüssel „locale“ funktioniert, wenn der Benutzer anonym ist.
Hallo @Ankur_Tyagi
Willkommen bei Meta ![]()
Dieser Beitrag sollte helfen. Es gibt zwei Parameter, die Sie benötigen.
Für einen neuen Benutzer, der sich noch nie zuvor bei Discourse angemeldet hat, sollte es funktionieren, wenn der Parameter locale beim ersten Anmelden des Benutzers auf der Website in der Nutzlast gesetzt ist. Zum Beispiel, unter Verwendung der von Ihnen verlinkten npm-Dokumente:
var userparams = {
// Erforderlich, sonst wird eine Ausnahme ausgelöst
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// Optional
"username": "some username",
"name": "some real name",
"locale": "es"
};
Für einen bestehenden Benutzer, der bereits ein Konto bei Discourse hat, müssen Sie den Parameter locale_force_update zu userparams hinzufügen und ihn auf true setzen. Ich denke, dass Sie für Ihren Fall den Parameter locale_force_update sowohl bei der Erstellung eines neuen Benutzers als auch bei der Aktualisierung eines Benutzers einbeziehen könnten:
var userparams = {
// Erforderlich, sonst wird eine Ausnahme ausgelöst
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// Optional
"username": "some username",
"name": "some real name",
"locale": "es",
"locale_force_update": true
};
Leider muss sich der Benutzer abmelden und wieder anmelden, um die Locale oder andere Attribute über die DiscourseConnect-Nutzlast zu aktualisieren. Das bedeutet, dass der Benutzer die aktualisierte Locale wahrscheinlich nicht sofort erhält. Dafür gibt es eine Problemumgehung, aber ich glaube nicht, dass sie vom discourse-sso npm-Paket behandelt wird. Um einen Benutzer über DiscourseConnect zu aktualisieren, ohne dass er sich abmelden und wieder bei Discourse anmelden muss, müssen Sie einen Aufruf an die Route sync_sso machen. Details dazu finden Sie hier: Sync DiscourseConnect user data with the sync_sso route.
Wenn Sie Probleme haben, die Locale für neue Benutzer oder für Benutzer, die sich ab- und wieder anmelden, korrekt einzustellen, nachdem Sie die Locale-Parameter hinzugefügt haben, versuchen Sie, die Discourse-Site-Einstellung verbose discourse connect logging zu aktivieren. Dies ermöglicht es Ihnen, die Parameter zu sehen, die von Ihrer Website an Discourse gesendet werden, auf Ihrer Seite /logs (zu finden unter Admin / Logs / Error Logs).
Hallo @Lilly
Danke für deine Antwort.
Ich habe es mit einem neuen Benutzer versucht und auch die Locale für einen bestehenden Benutzer aktualisiert, aber es hat nicht funktioniert. Ich glaube, es funktioniert nur für anonyme Benutzer. Ich suche nach einer Lösung für angemeldete Benutzer.
Es wäre hilfreich, wenn du dir die unten aufgeführten Konfigurationsdetails ansehen könntest. Vielleicht gibt es etwas, das ich aktualisieren muss, um das Problem zu beheben, ich bin mir nicht sicher.
- Discourse-Forum-Version: Discourse 3.2.0.beta1-dev
- Verwendetes JS-Paket für SSO: discourse-sso ( Version: 1.0.5 )
- Link zum Discourse-Paket: discourse-sso - npm
Hallo @Ankur_Tyagi, es tut mir leid, dass du immer noch Probleme hast. Hast du Simons Rat bezüglich des Parameters locale_force_update befolgt? Ich glaube, alles, was ich über SSO weiß, stammt von @simon ![]()
Ich würde diese Informationen von @simon sorgfältig durchgehen, ebenso wie die offizielle Anleitung DiscourseConnect SSO How-To.
Die Einstellung für die detaillierte Protokollierung von Discourse Connect und die Protokolle können dir bei der Fehlerbehebung helfen:
Danke @Lilly, ich werde diese Lösung ausprobieren
