لدينا تطبيق منتدى Discourse متصل بتطبيقنا عبر SSO. يتم تحديث صور المستخدمين مباشرة من خلاله. ولكن بما أن صورنا تخضع للمراجعة، نحتاج إلى مسح صور المستخدمين من جانب تطبيق Discourse.
هل يمكن تحقيق ذلك عبر واجهة برمجة التطبيقات REST أو من خلال تحسينات آلية SSO؟ لم أتمكن من العثور على هذه المعلومات في الوثائق.
يجب أن تتمكن من استدعاء مسار sync_sso لإعادة مزامنة صورة الملف الشخصي للمستخدم، ولكن يمكنك أيضًا إرسال طلب PUT إلى http://localhost:3000/u/<username>/preferences/avatar/pick مع معرف رفع فارغ
إليك كود Ruby يمكنك استخدامه والذي يستخدم gem الخاص بـ discourse_api ليكون لديك مرجع. نقطة النهاية sync_sso تختلف قليلاً عن نقاط النهاية الأخرى لأنك تحتاج إلى إرسال حمولة موقعة إليها.
هل فهمتُ بشكل صحيح أنه يمكننا إرسال POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=...؟
هل معلمات ‘sso’ و’sig’ مماثلة لتلك المستخدمة في تدفق مصادقة SSO؟
لقد حاولت تنفيذ الطلب كما هو موضح أعلاه POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=...، وقد ردّ بـ 200 مع بيانات المستخدم الخاص بي، لكن صورة الملف الشخصي للمستخدم لم يتم تحديثها دون أي أحداث سجل. ما الخطأ الذي أقوم به؟
يجب تضمين api_key و api_username في رأس HTTP، لأن استخدامهما في معلمات الاستعلام أصبح قديماً.
أعتقد أن هناك حماية في الكود تمنع حذف الصورة الرمزية بالخطأ إذا تم إغفال الحقل أو تركه فارغاً. على الأرجح ستحتاج إلى توفير رابط لصورة رمزية افتراضية لاستبدال الصورة الرمزية الحالية.
لقد استبدلت بيانات اعتماد واجهة برمجة التطبيقات (API) بالعناوين. لم تقم مزامنة الدخول الموحد (SSO) بتحديث صورة المستخدم بالصورة المقدمة. على الرغم من أن مهمة Sidekiq في هذه الدعوة قد اكتملت ولم تكن هناك سجلات للأخطاء أو التحذيرات.