إنشاء مستخدم external_ids parameter

أحاول كتابة دالة لاستيراد جميع المستخدمين الحاليين من موقعنا الخارجي (طرف ثالث، أنا فقط أقوم بإنشاء الواجهة الوسيطة) وأحاول استخدام دالة createUser. تعمل بشكل جيد، باستثناء المعلمة external_ids. بغض النظر عما أرسله فيها (جربت المصفوفات، الكائنات.. أي شيء يخطر ببالك) لا يتم حفظ المعرف الخارجي ولكن يتم إنشاء المستخدم. لا توجد أخطاء.

هل هناك تنسيق محدد للكائن external_ids؟

لقد رأيت حل sso_sync ولكني أفضل عدم سلوك هذا المسار، خاصة وأن المعلمة external_ids مضمنة في واجهة برمجة التطبيقات.

أي نصائح؟ شكراً مقدماً

أهلاً بك :wave:

للإجابة على هذا السؤال تحديدًا، أعتقد أن التنسيق المتوقع هو شيء مثل:

{ <provider_name>: <unique_id> }

إعجاب واحد (1)

شكرا على ردك وأهلاً بك!

لقد جربت التنسيق الذي أرسلته ونجح الطلب ولكن لم يتم حفظ أي معرفات خارجية بعد :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، فمن خلال قراءة الكود، يبدو أنه لا يمكنك إضافة المعرف الخارجي عند الإنشاء. الكود أعلاه فقط يتعامل مع الحسابات المرتبطة وهي مختلفة عن SSO.

هل يمكنك محاولة إجراء مكالمتين: المكالمة الأولى كما هي الآن، ولكن بدون المعرفات الخارجية، وإضافة مكالمة ثانية إلى updateUser، بما في ذلك معلومات المعرف الخارجي؟ نأمل أن ينجح ذلك.

إعجاب واحد (1)

شكراً لمساعدتك، ونعم أنا أستخدم DiscourseConnect وهو السبب على الأرجح لعدم عمل هذا. أعتقد أن هذا هو النهج الذي سأضطر إلى اتباعه في النهاية. إما ذلك أو يجب أن أقوم بإجراء استدعاء ثانٍ يقوم بتسجيل دخول المستخدم عبر SSO باستخدام المعرف الخارجي بحيث يتم ربطه ببريده الإلكتروني.
تعديل: أعتقد أن updateUser سيواجه نفس المشكلة لأنني لا أملك موفرًا محددًا، لذا فإن تسجيل الدخول عبر SSO هو أفضل رهان لي على الأرجح.

لتحديث هذا الموضوع وإغلاقه، كان الحل الوحيد الذي نجح هو تشغيل sso_sync بعد إنشاء مستخدم جديد، وحتى هذا لم يكن ضروريًا جدًا لأنه بمجرد أن يحاول المستخدم تسجيل الدخول الموحد إلى discourse، سيحدث المزامنة على أي حال عبر البريد الإلكتروني على ما يبدو.
شكراً لكل من ساعد.

إعجابَين (2)

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