أنا أستخدم إضافة Discourse Patreon وواجهت مشكلة. التكامل يعمل بشكل مثالي للمستخدمين الذين لديهم نفس عنوان البريد الإلكتروني على كل من Discourse و Patreon - يمكنهم ربط حساباتهم والحصول على المجموعة/المزايا الصحيحة.
ومع ذلك، بالنسبة للمستخدمين الذين لديهم بريد إلكتروني مختلف على Patreon و Discourse، عندما يحاولون ربط حساب Patreon الخاص بهم عبر زر “Connect” في ملفهم الشخصي على Discourse، فإنهم يحصلون على هذا الخطأ بعد التفويض على Patreon:
\u003e عذرًا، حدث خطأ أثناء محاولة تفويض حسابك مع Patreon. يرجى المحاولة مرة أخرى.
يحدث هذا بغض النظر عن الجهاز أو المتصفح.
هام: الإضافة تعمل بشكل جيد بخلاف ذلك - يتم إقران المستخدمين الذين لديهم عناوين بريد إلكتروني متطابقة ويحصلون على مزاياهم، لذا فإن Client ID و Secret و Redirect URI كلها معدة بشكل صحيح.
ما جربته:
تعيين المجموعة يدويًا (تتم إزالته بواسطة المزامنة)
إعادة التحقق من جميع إعدادات الإضافة وتطبيق Patreon
الاختبار على أجهزة ومتصفحات متعددة
هل هناك طريقة للسماح للمستخدمين الذين لديهم عناوين بريد إلكتروني مختلفة بربط حساب Patreon الخاص بهم بحساب Discourse الحالي الخاص بهم، أو على الأقل لتجنب هذا الخطأ؟
ومع ذلك، لم يعد Patreon يدعم V1 منذ سنوات. إنه يتعطل باستمرار، ولا تتم مزامنته بالكامل، ومؤخرًا، لم يعد يعمل معنا على الإطلاق.
المشكلة هي أنه عندما ننتقل إلى واجهة برمجة التطبيقات V2 التي يدعمها Patreon، فإنها تفشل في المصادقة على المستخدمين. عندما يحاول المستخدمون النقر على “تسجيل الدخول باستخدام Patreon” ويسمحون لواجهة برمجة التطبيقات v2 بالاتصال بحساب Patreon الخاص بهم، فإنهم يحصلون على هذا الخطأ:
عذرًا، حدث خطأ أثناء محاولة مصادقة حسابك مع Patreon. يرجى المحاولة مرة أخرى.
ووفقًا للوثائق الرسمية لإضافة Patreon الخاصة بـ Discourse، تنص تحديدًا على أن واجهة برمجة التطبيقات v2 قد تسبب هذه الأخطاء في المصادقة. مما يجعل v2 غير قابل للاستخدام.
لحسن الحظ، وجدنا حلاً بديلاً لجعل واجهة برمجة التطبيقات v2 تعمل. يجب إضافة هذا الحل إلى الوثائق الرسمية لأنه في الوقت الحالي، واجهة برمجة التطبيقات v1، وهي ما يوصى به، معطلة تمامًا.
الحل
الحل هو إنشاء OAuth2 مخصص. بدلاً من أن يستخدم المستخدمون زر “تسجيل الدخول باستخدام Patreon” من إضافة Patreon، سيستخدمون زر تسجيل دخول مخصص أنشأناه للمصادقة مع Patreon باستخدام OAuth الخاص بنا.
الخطوة 1: أضف عناوين URI هذه لإعادة التوجيه إلى Patreon.
https://<رابط خادم Discourse الخاص بك>/auth/oauth2_basic/callback
https://<رابط خادم Discourse الخاص بك>/auth/patreon/callback
الخطوة 2: في Discourse، انتقل إلى Admin > تسجيل الدخول والمصادقة > OAuth2 وقم بتكوين ما يلي:
oauth2_email_verified: true (ثق بالمزود لتقليل المطالبات) إذا كان بعض رعاة Patreon يفتقرون إلى البريد الإلكتروني، فقم بتعيين هذا على false وتوقع مطالبة تسجيل.
oauth2_button_title: تسجيل الدخول باستخدام Patreon
oauth2_allow_association_change: false (موصى به)
الخطوة 3: في عناصر تحكم تسجيل الدخول الأساسية في Discourse، قم بتكوين ما يلي:
enable sso: false
patreon login enabled: false (يمنع وجود زرين لـ Patreon؛ احتفظ بالإضافة للمزامنة فقط)
allow new registrations: اختر:
true للسماح لرعاة Patreon الجدد بإنشاء حسابات
false للسماح للمستخدمين الحاليين في Discourse فقط بتسجيل الدخول
invite only: false أثناء الاختبار
must approve users: false أثناء الاختبار
session_cookie_domain: (فارغ)
الخطوة 4: في ملف yml الخاص بـ Discourse، قم بتكوين ما يلي للشبكات والمضيفين.
DISCOURSE_HOSTNAME في app.yml: <رابط خادم Discourse الخاص بك>
force_https: true
الخطوة 5: أعد بناء التطبيق لتطبيق التغييرات:
cd /var/discourse
./launcher rebuild app
النتيجة:
الآن يجب أن يكون لديك زر تسجيل دخول مخصص يعمل باستخدام OAuth2 مع Patreon والذي يعمل بشكل صحيح مع واجهة برمجة التطبيقات v2 والذي يقوم بمزامنة مجموعات المستخدمين الخاصة بك مع Patreon بشكل صحيح.
عمل رائع، @watson! لقد نقلت حلك إلى هذا الموضوع في الوقت الحالي، ونقلته إلى Feature لأنه يتعلق بتحسين/إصلاح لكيفية عمل المكون الإضافي الرسمي لـ patreon. إذا تمكن شخص أو اثنان آخرون من تكرار خطواتك وتأكيد أنها تعمل، فأعتقد أن التحديث سيكون ضروريًا للتعليمات الرسمية لـ patreon.