ユーザー作成 external_ids パラメータ

外部サイト(サードパーティ、ミドルウェアのみ作成)から既存の全ユーザーをインポートする関数を作成しようとしています。createUser 関数を使用しようとしていますが、external_ids パラメータを除いて正常に動作します。配列やオブジェクトなど、どのような値を送信しても、外部 ID は保存されず、ユーザーは作成されます。エラーはありません。

external_ids オブジェクトには特定のフォーマットがありますか?

sso_sync ソリューションを見ましたが、特に external_ids パラメータが API に含まれているため、その方法をとることは避けたいです。

何かヒントはありますか?よろしくお願いします。

こんにちは、ようこそ:wave:

これについて具体的に答えるには、期待される形式は次のようになると考えられます。

{ <provider_name>: <unique_id> }

「いいね!」 1

ありがとうございます。そして、ようこそ!

お送りいただいたフォーマットを試しましたが、リクエストは通過しましたが、外部IDはまだ保存されていません :confused: "external_ids": {},

使用しているコードのサンプルを以下に示します(nodejs)

const create = await connection.post('/users.json', {
				name: `${req.body.first_name} ${req.body.last_name}`,
				email: req.body.email,
				password: test_password,
				username: `${req.body.first_name}_${req.body.last_name}`,
				external_ids: JSON.stringify({ 'magento': req.body.user_id }),

事前に定義する必要があるものはありますか、または何か間違っている点はありますか?

認証子は正しく設定されていますか?関連するコードは次のとおりだと思います。

SSOはすでに設定済みで、サードパーティサイトからDiscourseへのリダイレクトも可能でしたが、discourse connect provider secretsを定義する際にプロバイダーを定義する場所以外に、どこで定義したか思い出せません。何か見落としていることはありますか?

うーん、わかりました。DiscourseConnect を使用している場合、コードを読むと、作成時に外部 ID を追加できないようです。上記のコードは、SSO とは異なる関連アカウントのみを処理します。

2 回呼び出しを試すことができます。まず、現在と同じように呼び出しますが、外部 ID は含めず、次に updateUser を呼び出して、外部 ID 情報を含めます。これでうまくいくといいのですが。

「いいね!」 1

ご協力ありがとうございます。はい、DiscourseConnectを使用しているため、おそらくこれが機能しない理由です。これが最終的に行う必要があるアプローチだと思います。それ以外の場合は、SSOログインが外部IDを使用してユーザーをログインさせ、メールにリンクするように2番目の呼び出しを行う必要があります。
編集:updateUserも、プロバイダーが定義されていないため、同じ問題を抱えていると思います。したがって、SSOログインが最善の策である可能性が高いです。

アップデートとこの件の締めくくりとして、唯一機能した解決策は、新しいユーザーを作成した後に sso_sync を実行することでした。しかし、ユーザーがディスコースにSSOでログインしようとすると、メール経由で同期が行われるため、それほど必要でもありませんでした。\n協力してくれたすべての人に感謝します。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.