SSO経由でログイン中のユーザーの言語を設定するにはどうすればよいですか。初めてアクセスするユーザーに対して「locale」キーを使用してみましたが、うまくいきませんでした。「locale」キーは匿名ユーザーの場合に機能すると考えています。
こんにちは @Ankur_Tyagi さん
Metaへようこそ ![]()
この投稿がお役に立つはずです。2つのパラメータが必要です。
初めてDiscourseにログインする「新規」ユーザーの場合、ユーザーがサイトに初めてログインする際にペイロードでlocaleパラメータが設定されていれば機能するはずです。例えば、あなたがリンクしたnpmドキュメントを使用すると、次のようになります。
var userparams = {
// 必須、それ以外の場合は例外が発生します
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// オプション
"username": "some username",
"name": "some real name",
"locale": "es"
};
既にDiscourseにアカウントを持っている「既存」ユーザーの場合、userparamsにlocale_force_updateパラメータを追加し、それをtrueに設定する必要があります。あなたのケースでは、新規ユーザーを作成する場合とユーザーを更新する場合の両方でlocale_force_updateパラメータを含めることができると思います。
var userparams = {
// 必須、それ以外の場合は例外が発生します
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// オプション
"username": "some username",
"name": "some real name",
"locale": "es",
"locale_force_update": true
};
残念ながら、DiscourseConnectペイロードを介してロケールやその他の属性を「更新」するには、ユーザーはDiscourseからログアウトし、再度ログインする必要があります。これは、ユーザーがすぐに更新されたロケールを取得できない可能性が高いことを意味します。これには回避策がありますが、discourse-sso npmパッケージでは処理されていないと思います。Discourseにユーザーをログアウトして再度ログインさせることなくDiscourseConnect経由でユーザーを更新するには、sync_ssoルートに呼び出しを行う必要があります。詳細はこちらをご覧ください: https://meta.discourse.org/t/sync-discourseconnect-user-data-with-the-sync-sso-route/84398。
新規ユーザーのロケール設定で問題が発生している場合、またはロケールパラメータを追加した後にログアウトして再度ログインしたユーザーで問題が発生している場合は、verbose discourse connect logging Discourseサイト設定を有効にしてみてください。これにより、サイトの/logsページ(管理者 / ログ / エラーログで見つけられます)からDiscourseに送信されているパラメータを確認できるようになります。
こんにちは、@Lilly さん
お返事ありがとうございます。
新しいユーザーでも、既存のユーザーのロケールを更新しても機能しませんでした。匿名ユーザーの場合のみ機能するようです。ログインしているユーザー向けの解決策を探しています。
以下に設定構成の詳細を確認していただけると助かります。修正が必要な点があるかもしれません。
- Discourse フォーラムのバージョン: Discourse 3.2.0.beta1-dev
- SSO に使用される JS パッケージ: discourse-sso (バージョン: 1.0.5)
- Discourse パッケージリンク: discourse-sso - npm
@Ankur_Tyagiさん、まだ問題が発生しているとのこと、申し訳ありません。Simonのアドバイスでlocale_force_updateパラメータを使用することを確認しましたか? SSOに関する私の知識はすべて@simonさんから得たものです ![]()
Simonさんが投稿した情報と、公式のDiscourseConnect SSOハウツーを注意深く確認することをお勧めします。
verbose discourse connect logging設定とログは、このトラブルシューティングに役立ちます。
@Lillyさん、ありがとうございます。この解決策を試してみます。
