أفضل طريقة لتحديث أو إنشاء مستخدم موجود، عبر API، من عميل متصل؟

هذه هي حالة الاستخدام، والتي أنا متأكد من أن الكثيرين واجهوها:

  • لديك مجموعة من المستخدمين في 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، ووجدت القليل جدًا من الأمثلة، ولكن هذه المشاركة تشير إلى أنها أفضل طريقة للمضي قدمًا.
إعجاب واحد (1)

لست خبيراً مثل البعض، لكنني أعتقد ذلك.

يبدو صحيحاً بالنسبة لي. أفضل وثيقة، ودائماً ما تكون محدثة، هي الهندسة العكسية لواجهة برمجة تطبيقات Discourse.

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