لقد أجريت بعض الأبحاث حول مشكلتي وأعتقد أنني قريب، لكنني قد أحتاج إلى دفعة صغيرة في الاتجاه الصحيح.
أنا في الأساس أحاول دمج Discourse كتطبيق بدون واجهة أمامية في مشروعي React الذي يحتوي بالفعل على مستخدمين مصادق عليهم في قاعدة بياناته الخاصة.
للقيام بذلك، عندما يسجل المستخدم الدخول في صفحة React، سيقوم بتنفيذ تسجيل دخول موحد (SSO) للمستخدم للمصادقة مع واجهة برمجة تطبيقات Discourse حتى نتمكن من استدعاء الوظائف المناسبة وما إلى ذلك.
لذا، أولاً وقبل كل شيء، أقوم بجلب البيانات من عنوان URL الخاص بـ Discourse الخاص بي ومنع أي عمليات إعادة توجيه مثل هذه:
const response = await fetch('https://forum.mysite.com/session/sso', {
method: 'GET',
redirect: 'manual', // منع المتابعة التلقائية لإعادة التوجيه
});
ثم أقوم بكل عملية التحقق من الصحة وأرسل الحمولة بمعلومات المستخدم إلى الواجهة الخلفية باستخدام:
const loginResponse = await fetch(newurl.toString(), {
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'manual',
});
والتنسيق والتوقيع وما إلى ذلك كلها تبدو جيدة. لكنها تعطيني خطأ. لذا قمت بالتعليق على هذا، وأخذت عنوان URL الذي تم إنشاؤه ونسخته إلى متصفحي لمعرفة ما يحدث، وأعطاني هذا:
سجل SSO المطول: Nonce غير صحيح، تم إنشاؤه في جلسة متصفح مختلفة، أو انتهت صلاحيته add_groups: admin: avatar_force_update: avatar_url: bio: card_background_url: confirmed_2fa: e
لذا بعد بعض البحث، أعتقد أن هذه الإجابات قريبة من مساعدتي ولكنني لست واضحًا جدًا بشأن ما يجب تغييره لإعداداتي و force_https لا يبدو أنه إعداد يمكننا التلاعب به بعد الآن (لست متأكدًا حتى مما يفعله):
أشعر أن هذا قد يكون ناتجًا عن جلسات متصفح مختلفة، ولكن لا أعرف. أعتقد أنني قريب من جعل هذا يعمل، أحتاج فقط إلى دفعة صغيرة. أي معلومات ستكون مفيدة. شكرًا!
