خطأ أثناء محاولة المصادقة على حسابك مع Patreon

مرحباً،

أنا أستخدم إضافة Discourse Patreon وواجهت مشكلة. التكامل يعمل بشكل مثالي للمستخدمين الذين لديهم نفس عنوان البريد الإلكتروني على كل من Discourse و Patreon - يمكنهم ربط حساباتهم والحصول على المجموعة/المزايا الصحيحة.

ومع ذلك، بالنسبة للمستخدمين الذين لديهم بريد إلكتروني مختلف على Patreon و Discourse، عندما يحاولون ربط حساب Patreon الخاص بهم عبر زر “Connect” في ملفهم الشخصي على Discourse، فإنهم يحصلون على هذا الخطأ بعد التفويض على Patreon:

\u003e عذرًا، حدث خطأ أثناء محاولة تفويض حسابك مع Patreon. يرجى المحاولة مرة أخرى.

يحدث هذا بغض النظر عن الجهاز أو المتصفح.

هام: الإضافة تعمل بشكل جيد بخلاف ذلك - يتم إقران المستخدمين الذين لديهم عناوين بريد إلكتروني متطابقة ويحصلون على مزاياهم، لذا فإن Client ID و Secret و Redirect URI كلها معدة بشكل صحيح.

ما جربته:

  • تعيين المجموعة يدويًا (تتم إزالته بواسطة المزامنة)
  • إعادة التحقق من جميع إعدادات الإضافة وتطبيق Patreon
  • الاختبار على أجهزة ومتصفحات متعددة

هل هناك طريقة للسماح للمستخدمين الذين لديهم عناوين بريد إلكتروني مختلفة بربط حساب Patreon الخاص بهم بحساب Discourse الحالي الخاص بهم، أو على الأقل لتجنب هذا الخطأ؟

أي نصائح أو أفضل الممارسات ستكون موضع تقدير كبير!

شكراً!


إعجابَين (2)

منذ فترة طويلة ونحن نستخدم إضافة Patreon مع واجهة برمجة التطبيقات V1 لـ Discourse لتسجيل الدخول باستخدام Patreon. هذا هو الإعداد الموصى به وفقًا للوثائق الرسمية لإضافة Patreon الخاصة بـ Discourse: https://meta.discourse.org/t/configure-patreon-integration-with-discourse/62380

Screenshot 2025-10-28 at 11.59.15 AM

ومع ذلك، لم يعد Patreon يدعم V1 منذ سنوات. إنه يتعطل باستمرار، ولا تتم مزامنته بالكامل، ومؤخرًا، لم يعد يعمل معنا على الإطلاق.

المشكلة هي أنه عندما ننتقل إلى واجهة برمجة التطبيقات V2 التي يدعمها Patreon، فإنها تفشل في المصادقة على المستخدمين. عندما يحاول المستخدمون النقر على “تسجيل الدخول باستخدام Patreon” ويسمحون لواجهة برمجة التطبيقات v2 بالاتصال بحساب Patreon الخاص بهم، فإنهم يحصلون على هذا الخطأ:

عذرًا، حدث خطأ أثناء محاولة مصادقة حسابك مع Patreon. يرجى المحاولة مرة أخرى.

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

Screenshot 2025-10-28 at 12.05.06 PM

لحسن الحظ، وجدنا حلاً بديلاً لجعل واجهة برمجة التطبيقات 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_enabled: true

  • oauth2_client_id: <معرف عميل Patreon الخاص بك>

  • oauth2_client_secret: <سر عميل Patreon الخاص بك>

  • oauth2_authorize_url: https://www.patreon.com/oauth2/authorize

  • oauth2_authorize_signup_url: (اتركه فارغًا)

  • oauth2_token_url: https://www.patreon.com/api/oauth2/token

  • oauth2_callback_user_id_path: (اتركه فارغًا)

  • oauth2_callback_user_info_paths: email

  • oauth2_token_url_method: POST

  • oauth2_callback_user_info_paths: email

  • oauth2_fetch_user_details: true

  • oauth2_user_json_url: https://www.patreon.com/api/oauth2/v2/identity?include=memberships&fields[user]=email,full_name,vanity

  • oauth2_json_user_id_path: data.id

  • oauth2_json_name_path: data.attributes.full_name

  • oauth2_json_username_path: data.attributes.vanity

  • oauth2_json_email_path: data.attributes.email

  • oauth2_json_email_verified_path: (اتركه فارغًا)

  • oauth2_email_verified: true (ثق بالمزود لتقليل المطالبات) إذا كان بعض رعاة Patreon يفتقرون إلى البريد الإلكتروني، فقم بتعيين هذا على false وتوقع مطالبة تسجيل.

  • oauth2_email_verified: true

  • oauth2_send_auth_header: true

  • oauth2_send_auth_body: true

  • oauth2_debug_auth: true

  • oauth2_authorize_options: scope

  • oauth2_scope: identity identity[email] campaigns campaigns.members

  • 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 بشكل صحيح.

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

عمل رائع، @watson! لقد نقلت حلك إلى هذا الموضوع في الوقت الحالي، ونقلته إلى Feature لأنه يتعلق بتحسين/إصلاح لكيفية عمل المكون الإضافي الرسمي لـ patreon. إذا تمكن شخص أو اثنان آخرون من تكرار خطواتك وتأكيد أنها تعمل، فأعتقد أن التحديث سيكون ضروريًا للتعليمات الرسمية لـ patreon.