SSOユーザーの言語設定方法

SSO経由でログイン中のユーザーの言語を設定するにはどうすればよいですか。初めてアクセスするユーザーに対して「locale」キーを使用してみましたが、うまくいきませんでした。「locale」キーは匿名ユーザーの場合に機能すると考えています。

こんにちは @Ankur_Tyagi さん :wave:t2: Metaへようこそ :slight_smile:

この投稿がお役に立つはずです。2つのパラメータが必要です。

「いいね!」 1

初めて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にアカウントを持っている「既存」ユーザーの場合、userparamslocale_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に送信されているパラメータを確認できるようになります。

「いいね!」 2

こんにちは、@Lilly さん
お返事ありがとうございます。

新しいユーザーでも、既存のユーザーのロケールを更新しても機能しませんでした。匿名ユーザーの場合のみ機能するようです。ログインしているユーザー向けの解決策を探しています。

以下に設定構成の詳細を確認していただけると助かります。修正が必要な点があるかもしれません。

  1. Discourse フォーラムのバージョン: Discourse 3.2.0.beta1-dev
  2. SSO に使用される JS パッケージ: discourse-sso (バージョン: 1.0.5)
  3. Discourse パッケージリンク: discourse-sso - npm

@Ankur_Tyagiさん、まだ問題が発生しているとのこと、申し訳ありません。Simonのアドバイスでlocale_force_updateパラメータを使用することを確認しましたか? SSOに関する私の知識はすべて@simonさんから得たものです :slight_smile:

Simonさんが投稿した情報と、公式のDiscourseConnect SSOハウツーを注意深く確認することをお勧めします。

verbose discourse connect logging設定とログは、このトラブルシューティングに役立ちます。

「いいね!」 1

@Lillyさん、ありがとうございます。この解決策を試してみます。