ينتقل المستخدم إلى النموذج ويضيف اسمه وبريده الإلكتروني وكلمة المرور
ثم يتم تسجيل دخول المستخدم تلقائيًا
ثم عندما ينقر المستخدم على رابط المجتمع، يتم تسجيل دخوله تلقائيًا إلى Discourse (حيث قام المكون الإضافي Discourse Connect بعمله لإنشاء مستخدم جديد في Discourse)
بالنسبة للنموذج الثاني،
يضيف المستخدم اسمًا وبريدًا إلكترونيًا.
نقدم لهم كلمة مرور مؤقتة
بقية العملية هي نفسها، أي يتم تسجيل دخول المستخدم تلقائيًا عند التسجيل
ولكن في هذه الحالة، لم يتم إنشاء المستخدم في Discourse.
لا أرى أي إعداد في Discourse Connect يتم تشغيله عن طريق تغيير نموذج للتسجيل. هل هناك خطاف (hook) يحتاج إلى تشغيله عند تسجيل مستخدم في ووردبريس (WP) لا يتم تشغيله في حالة النموذج الثاني؟
في الواقع، ما هو خطاف (hook) ووردبريس (WordPress) الذي يُستخدم لإنشاء مستخدم في Discourse؟ يجب أن يكون هناك استدعاء لواجهة برمجة التطبيقات (API) لتشغيل نشاط في Discourse. ألا يمكن أن يفشل لسبب ما؟
ماذا يحدث لهؤلاء المستخدمين عند النقر على “تسجيل الدخول” في Discourse؟ صف بالضبط ما يحدث عند محاولتهم ذلك. أفهم أن المستخدم لا يظهر في لوحة الإدارة الخاصة بك بعد إنشائه في Wordpress، ولكن هذا سؤال مختلف قليلاً.
الحالة الأولى حيث يكون المستخدم مسجلاً في WP -
لا يحتاج المستخدم إلى النقر على تسجيل الدخول في Discourse ويتم تسجيل دخوله تلقائيًا
بالنقر على الرابط التالي في WP -
إذا استخدمت الرابط فقط - https://community.showprowess.com/ - للانتقال إلى Discourse من WP، فلن يتم تسجيل دخول المستخدم وسيتعين علي النقر على زر تسجيل الدخول في Discourse لتسجيل دخول المستخدم.
بمجرد تسجيل دخول المستخدم، يظل مسجلاً الدخول حتى أقوم بتسجيل الخروج من WP.
هذا يخلق مشكلة لأنه إذا لم ينقر المستخدم على /session/sso?return_path=/، فلن يتم تسجيل دخول المستخدم. هذا يقيدني من توجيه المستخدم إلى صفحة الرسائل الخاصة من WP إلى Discourse. (وظيفة أحتاجها كجزء من المنتج)
نظرًا لأن هذا هو الرابط الأول الذي أنقر عليه، فلن تفتح نافذة الرسالة. بدلاً من ذلك، يتم تسجيل دخولي إلى Discourse. الآن يتعين علي العودة ثم النقر على نفس الرابط (رابط الرسالة) مرة أخرى لجعله يعمل.
يبدو الأمر كالتالي -
هذا مزعج للمستخدمين.
في السابق، كان كل هذا يعمل بشكل جيد حيث كان المستخدم يسجل دخوله تلقائيًا إلى Discourse وكان الرابط https://community.showprowess.com يأخذني إلى صفحة Discourse مسجلة الدخول. ربما تم تسجيل دخول المستخدم باستخدام ملفات تعريف الارتباط للمتصفح أو شيء من هذا القبيل، لكن هذا لم يعد يعمل.
عندما لا يكون المستخدم مسجلاً في Discourse
يحدث هذا في كلا النموذجين، أي القديم والجديد.
في هذه الحالة، قمت بتسجيل الدخول مرة أخرى ومررت بعملية الإعداد، وهذه المرة تم إنشاء المستخدم في Discourse. قبل ذلك، لم يكن المستخدم موجودًا في Discourse (لقد تحققت من قائمة المستخدمين الجدد في منطقة المسؤول قبل تسجيل الدخول مرة أخرى).
لقد اتبعت نفس الخطوات المذكورة أعلاه - انقر على رابط /sessions لتسجيل الدخول التلقائي في Discourse. إذا نقرت على نطاق المجتمع فقط، فلن يتم تسجيل الدخول.
للأسف، لا أستطيع تكرار الحالة التي لا يتم فيها إنشاء المستخدم عند التسجيل ولكنه يتم إنشاؤه عند تسجيل الدخول الأول. هذا لا يحدث مع كل تسجيل مستخدم جديد، وهو أمر غريب جدًا.
بصراحة، أنا مرتبك قليلاً بشأن كيفية ارتباط هذا الوصف لمشكلتك بالوصف السابق لمشكلة ناتجة عن وجود نموذجي تسجيل مختلفين في ووردبريس. لكن أعتقد أنه يمكنني مساعدتك هنا على الرغم من ذلك.
أحد الأشياء التي يجب فهمها هو أنه لا توجد طريقة (ولم تكن هناك طريقة أبدًا) لتسجيل الدخول فورًا إلى خدمتين مختلفتين على نطاقين مختلفين. كلما بدا أنك مسجل الدخول إلى الخدمة أ على النطاق أ، وعندما تنتقل إلى الخدمة ب على النطاق ب، تكون مسجلًا للدخول أيضًا، فإن ما حدث بالفعل هو أنك تم تسجيل دخولك إلى الخدمة ب عبر الخدمة أ مرة واحدة فقط عند زيارة النطاق ب وبدأت عملية تسجيل الدخول، وليس قبل ذلك.
شيء آخر يجب فهمه هو أنه، خارج السيناريو المحدد الذي تصفه حيث تريد إعادة توجيه شخص ما إلى مكان معين في التطبيق يتطلب جلسة، فإن معظم المستخدمين لا يهتمون، أو لا يلاحظون حقيقة أنهم بحاجة إلى النقر على “تسجيل الدخول” في الخدمة ب أحيانًا. في تجربتي في العمل مع العملاء على حلول الهوية، يكون مسؤولو مواقع الويب عادةً أكثر حساسية لهذا الأمر من مستخدميهم.
الطريقة التي تعمل بها هذه الأمور لم تتغير. كلما بدا أن المستخدم يسجل الدخول “تلقائيًا”، فإن ما يحدث بالفعل هو أنه يتم إعادة توجيهه مرة أخرى إلى ووردبريس ثم إعادة توجيهه مرة أخرى إلى Discourse بمجرد المصادقة على جلسته في ووردبريس. إذا كان المستخدم مسجل الدخول بالفعل في ووردبريس، فسيبدو أنه تم تسجيل دخوله “تلقائيًا” إلى Discourse حيث ستحدث هذه إعادة التوجيه دون الحاجة إلى قيام المستخدم بأي شيء.
إحدى الطرق التي يمكنك من خلالها تشغيل تسجيل الدخول “التلقائي”، وإعادة توجيههم إلى مكان معين في Discourse بعد تسجيل الدخول، هي استخدام المسار الذي شاركته بالفعل
https://community.showprowess.com/session/sso?return_path=[any path in Discourse]
إذا كان المستخدم مسجل الدخول بالفعل في ووردبريس، ولكنه لم يسجل الدخول بعد إلى Discourse عند استخدام عنوان URL هذا، فسيحدث ما يلي:
المستخدم مسجل الدخول بالفعل، لذلك يتم إعادة توجيه المستخدم تلقائيًا مرة أخرى إلى Discourse
إذا كان هناك قيمة return_path في عنوان URL المستخدم في 1، فسيتم إعادة توجيه المستخدم إلى هناك
من وجهة نظر المستخدم، سيرى متصفحه وهو يقوم بالتحميل لفترة وجيزة، ولكنه سيكون فعليًا مسجل الدخول “تلقائيًا” إلى Discourse وسيتم إعادة توجيهه إلى جزء معين من التطبيق.
لاحظ أنه يمكنك فعليًا جعل return_path أي عنوان URL، حتى نطاق منفصل، إذا قمت بتعيين إعداد الموقع discourse connect allows all return paths إلى صحيح.
شكراً لك! هذا مفيد في حل مشكلة تسجيل دخول المستخدم تلقائياً من ووردبريس إلى ديسكورس. يمكنني استخدام return_path لتوجيه المستخدم إلى أي صفحة في ديسكورس. هذا يحل مشكلة توجيه المستخدم إلى صفحة الرسالة.
ومع ذلك، ما زلت غير متأكد لماذا، في بعض الحالات، لا يتم إنشاء المستخدم في ديسكورس عندما يتم إنشاء المستخدم في ووردبريس. هل تعرف متى يتم إنشاء المستخدم حقاً في ديسكورس من خلال تسجيل الدخول الأحادي (SSO)؟
هل يتم ذلك عند إنشاء مستخدم في ووردبريس؟
هل يتم ذلك عندما يحاول مستخدم ووردبريس جديد الوصول إلى ديسكورس ثم يتم إنشاء المستخدم وتسجيل دخوله وتوجيهه إلى ديسكورس؟
ما هي الخطاف (hook) الذي نستخدمه في ووردبريس لإنشاء مستخدم في ديسكورس؟
أحاول فهم أي حالة استثنائية قد لا تؤدي إلى إنشاء مستخدم في ديسكورس عند إنشاء مستخدم في ووردبريس.
حالة استخدام عملية:
أرحب بالمستخدمين الجدد كل أسبوع برسالة. الأسبوع الماضي انضم 30 مستخدماً إلى ووردبريس وتم إنشاء 16 منهم في ديسكورس. عندما أرغب في الإشارة إليهم في رسالة ترحيب، لا يمكنني الإشارة إليهم جميعاً - وهذا غريب جداً بالنسبة لي.
مع الإعدادات الافتراضية، يتم إنشاء المستخدمين في Discourse في المرة الأولى التي يسجل فيها المستخدم الدخول إلى Discourse باستخدام DiscourseConnect. حتى تلك اللحظة، لا يوجد مستخدم في Discourse.
يحتوي المكون الإضافي WP Discourse أيضًا على إعداد “إنشاء أو مزامنة مستخدمي Discourse عند تسجيل الدخول” والذي، عند تمكينه، سيقوم بإنشاء مستخدم عبر واجهة برمجة تطبيقات Discourse بعد تسجيل المستخدم في Wordpress. يستخدم هذا الإعداد إجراء wp wp_login، لذلك يجب أن تتسبب عملية تسجيل المستخدم في تشغيل هذا الإجراء لكي تعمل هذه الميزة.
لدي خيار “إنشاء أو مزامنة مستخدمي Discourse عند تسجيل الدخول” محددًا. لا يتم إنشاء المستخدم في Discourse لأن بعض المستخدمين يسجلون في WP ولكن لا يزورون المجتمع عند تسجيل الدخول لأول مرة. قد يعودون ويسجلون الدخول ثم ينقرون على رابط المجتمع، وبعد ذلك يتم إنشاء المستخدم.
تسجيل الدخول التلقائي الحالي بعد التسجيل في WP لا يستخدم WP_login
أفضل إنشاء المستخدم في Discourse عند التسجيل في WP.
لدي خطافات مخصصة على نموذج تسجيل المستخدم يمكنها تشغيل واجهة برمجة التطبيقات (API). هل هناك رمز يمكنني إضافته إلى الخطاف المخصص لإنشاء مستخدم في Discourse عبر واجهة برمجة التطبيقات (API)؟
هذا هو الجزء الذي لا أعرف كيفية القيام به، أي تشغيل wp_login من خطاف مخصص.
أقترح عليك قراءة بعض المعلومات حول الإجراء. وثائق WP هي مورد أفضل مني في هذا الشأن. للأسف، لن أتمكن من معرفة أفضل طريقة لدمج كود تسجيل دخول WP المخصص الخاص بك هنا. فيما يتعلق بالمشكلة التي تواجهها، أعتقد أننا توصلنا إلى حلها.