موفر تسجيل الدخول الموحد لـ Wordpress - صفحة فارغة

أنا أحاول استخدام ووردبريس كمزود لتسجيل الدخول الموحد (SSO) لمنصة ديسكورد عبر الإضافة. عند النقر على تسجيل الدخول في موقع المنتدى، يتم تحويلي إلى موقعي الإلكتروني مع معلمة URL مضافة لـ SSO، لكن الصفحة تظهر فارغة. هل من المفترض أن تقرأ الإضافة معلمة الـ URL وتتخذ إجراءً يفشل؟ هل يجب أن أوجهها إلى مسار محدد في الموقع الإلكتروني؟ لست متأكدًا من السلوك المتوقع، لذا لا أعرف كيفية استكشاف المشكلة. لا أرى أي أخطاء في سجلات أخطاء الخادم.

هل تستخدم موقعك صفحة تسجيل الدخول الافتراضية في ووردبريس عند /login.php؟ إذا لم يكن الأمر كذلك، فقد تحتاج إلى إضافة مسار إلى خيار ‘مسار صفحة تسجيل الدخول’ (الموجود في تبويب مزوّد SSO الخاص بـ WP Discourse).

هل قمت بتثبيت WooCommerce على موقعك؟

لم يستخدم الإعداد الافتراضي، وقد قمت بتعيينه في الحقل. ومع ذلك، لا تزال النتيجة صفحة فارغة.

ولا، لا يوجد ووكوميرس.

لذا أعتقد أن فهمي لكيفية عمل هذا الأمر قد يكون خاطئًا، أو أنني بحاجة إلى إجراء تغيير إضافي. أثناء الاختبار، أدركت أنه إذا كنت مسجّلًا بالفعل في الموقع الإلكتروني، فإن الأمر يعمل كما هو متوقع. ومع ذلك، كان توقعي أنه إذا لم أكن مسجّلًا في الموقع الإلكتروني، فسيتم بدء عملية تسجيل الدخول الخاصة بي، لكن يبدو أن هذا لا يحدث. بناءً على ذلك، لديّ سؤالان متابعة:

  1. هل من المفترض أن يؤدي إعادة توجيه تسجيل الدخول من discourse إلى إرسال المستخدم إلى /?sso=abcd1235… في موقعي أو إلى /sign-in/?sso=abcd1235… في موقعي (بما في ذلك مسار تسجيل الدخول المخصص الخاص بي)؟ إنه يستخدم حاليًا /.
  2. هل من المتوقع أن يحافظ كود تسجيل الدخول المخصص الخاص بي على معلمات عنوان URL الخاص بـ sso ويضمّنها في إعادة التوجيه إلى موقعي بمجرد تسجيل الدخول، ثم يتم إجراء اتصال sso؟

وأدركت للتو أنه يستخدم اسم مستخدم ووردبريس كاسم مستخدم في ديسكوس. في حالتنا، نحتاج إلى استخدام اللقب من ووردبريس لأن اسم المستخدم هو قيمة تجزئة مبنية على مزود المصادقة الطرفي الثالث. لذا قد يكون هذا طريقًا مسدودًا.

نعم. بعد النقر على زر ‘تسجيل الدخول’ في discourse، سيتم إعادة توجيه المستخدمين إلى عنوان URL الذي قمت بتعيينه كـ sso url في discourse. يجب أن يكون هذا هو عنوان URL الرئيسي لموقعك.

إذا لم تكن قد سجلت الدخول إلى WordPress بالفعل، فسيقوم رمز SSO بإعادة توجيهك إلى عنوان URL لتسجيل الدخول في موقعك. يكون هذا العنوان افتراضيًا /wp-login.php. يمكن تجاوز ذلك عن طريق تعيين خيار ‘مسار صفحة تسجيل الدخول’. بعد تسجيل الدخول، يجب إعادة توجيه المستخدمين مرة أخرى إلى عنوان URL الرئيسي لموقعك، مع بقاء معلمات الاستعلام المرسلة من discourse كما هي.

إذا لم يكن هذا يعمل بالنسبة لك عندما لم تكن قد سجلت الدخول إلى WordPress بالفعل، فقد تكون المشكلة هي أن لديك إعدادًا لإعادة توجيه تسجيل الدخول على موقعك يتجاوز إعادة التوجيه المحددة بواسطة رمز SSO الخاص بـ WP Discourse. احتمال آخر هو أن معلمات الاستعلام التي يضبطها discourse يتم إزالتها بواسطة كود تسجيل الدخول في موقعك.

يمكنك استخدام فلتر wpdc_sso_params لتجاوز اسم المستخدم الذي يضبطه الإضافة:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    $params['username'] = $user->user_nicename;

    return $params;
}

للمزيد من التفاصيل حول ما يحدث، يرجى الاطلاع على wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

كنتُ أتفحص كود الإضافة للتو ورأيت المكان الذي يمكنني فيه تغيير ذلك. استخدام تجاوز (override) هو نهج أفضل بكثير، شكرًا لك! سأراجع كود تسجيل الدخول المخصص الخاص بي وأرى ما إذا كان يتعارض مع العملية أو أين قد يحدث ذلك. هذا مفيد جدًا، شكرًا مرة أخرى.