هذه هي حالة الاستخدام، والتي أنا متأكد من أن الكثيرين واجهوها:
- لديك مجموعة من المستخدمين في Discourse
- لديك نظام خارجي (مزود خدمة، Drupal) يستخدم واجهة برمجة التطبيقات (API) لإنشاء مستخدمي Discourse وإدارة عضويات المجموعات
- لدى Drupal مجموعة متداخلة جزئيًا من المستخدمين. أي، يوجد مستخدمون بنفس عنوان البريد الإلكتروني في Discourse و Drupal، ولكنهم غير مرتبطين
- يستخدم Drupal واجهة برمجة التطبيقات (API) لمزامنة المستخدمين والمجموعات والعضويات لأن المستخدمين قد لا يستخدمون SSO أبدًا للوصول إلى Discourse، بدلاً من الاعتماد على رسائل البريد الإلكتروني
السلوك الحالي:
- يرفض Discourse أحيانًا استدعاء واجهة برمجة التطبيقات (API) لإنشاء مستخدم Discourse، لأن مستخدم Discourse موجود بالفعل بنفس البريد الإلكتروني
السلوك المرغوب:
- يربط Discourse المستخدم الموجود في Discourse بمستخدم Drupal، عبر البريد الإلكتروني
الحل المقترح:
- استعلام نقطة نهاية واجهة برمجة التطبيقات (API) في Discourse
/admin/users/list/all.json?email=$emailلجلب أي مستخدمين لديهم عنوان بريد إلكتروني مطابق - إذا كان المستخدم المطابق موجودًا
- ربط المستخدمين الحاليين (جانب Drupal)
- وإلا
- إنشاء مستخدم Discourse جديد
أسئلة
- هل يبدو هذا حلاً معقولاً، أم أن هناك طريقة أفضل للقيام بذلك؟
- هل استعلام واجهة برمجة التطبيقات (API) مُشكل بشكل صحيح؟
لا يوجد توثيق لكل منall.jsonومعامل سلسلة الاستعلامemail، ووجدت القليل جدًا من الأمثلة، ولكن هذه المشاركة تشير إلى أنها أفضل طريقة للمضي قدمًا.