OAuth يعيد التوجيه إلى /login بعد استدعاء JSON ناجح للمستخدم

تظهر إعدادات OAuth الأساسية الخاصة بي سلوكًا غريبًا جدًا. واجهت بعض الأخطاء في البداية أثناء الإعداد، وقد تم حلها. ومع ذلك، أرى الآن أن العملية تتدفق من Discourse إلى نقطة نهاية التفويض في Cognito، ثم إلى استدعاء Discourse، وأخيرًا إلى صفحة تسجيل الدخول في Discourse. لا توجد تحذيرات أو أخطاء في السجلات، وعند فحص السجلات، أرى أن هناك استدعاء JSON ناجحًا لجلب بيانات المستخدم.

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

يرجى الاطلاع على السجلات أدناه:

OAuth2 Debugging: after_authenticate response: creds: {"token"=>"eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc2LTQ5OWEtYjdiN
7:48 pm
OAuth2 Debugging: user_json_url: GET https://api.lifebac.com/token/details?token=eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc
7:48 pm
OAuth2 Debugging: user_json_response: #<Excon::Response:0x00007f36a7608a30 @data={:body=>"{\"id\":\"d78dd9b5-7276-499a-b7b6-02da38e03ce9\", ...}", :cookies=>[], :host=>"api.lifebac.com", :headers=>{"Conten
7:48 pm
OAuth2 Debugging: user_json: {"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", ...}

أي مساعدة فيما يحدث ستكون مفيدة للغاية. يسعدني تقديم تتبع المكدس إذا لزم الأمر.

إعادة التوجيه أمر طبيعي، ولكن يجب أن يظهر أيضًا نافذة منبثقة للتسجيل. هل تراها؟

يتم إنشاء حساب المستخدم فقط بعد أن يؤكد المستخدم تفاصيل الحساب ويضغط على “إنشاء”.

مرحبًا ديفيد،

للأسف، لا تظهر هذه المعلومات أي شيء لتأكيده دون إدخال جميع بياناتهم.

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

لا يمكن تخطي النافذة المنبثقة (بعد)، لكن يجب أن يتم تعبئتها تلقائيًا بالكامل بالبيانات من موفر الهوية الخاص بك.

ما هي قيم إعدادات OAuth2 الخاصة بك؟ لنأخذ oauth2_json_email_path كمثال.

أيضًا، هل يمكنك مشاركة سطر “user_json” الكامل من السجل، حتى نتمكن من رؤية جميع المفاتيح. (لا تتردد في إخفاء عناوين البريد الإلكتروني)

كانت البيانات الكاملة هي

{"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", "username"=>"patrick2"}

وكانت قيم الحقول هي “id” و “username” للحقول المطابقة.

أقوم حاليًا بتحديث نقطة النهاية لإضافة البريد الإلكتروني والاسم، لكنني كنتُ أعتقد أن معرف المستخدم واسم المستخدم فقط هما المطلوبان.

شكرًا لك

باتريك

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

إذا أمكنك إضافة هذه المعلومات إلى واجهة برمجة تطبيقات OAuth، فسيكون ذلك أكثر سلاسة لمستخدميك :+1:

نعم، أعمل على ذلك الآن! سأقوم بتحديث نقطة النهاية لتشمل البريد الإلكتروني أيضًا وأرى ما إذا كان ذلك سيحل المشكلة.

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

شكرًا

باتريك

نعم، يجب أن يكون كذلك. هل قمت بتعيين oauth2_json_username_path إلى username؟

@david، شكراً لك يا صديقي! لقد نجح الأمر مع البيانات.

ما هي الطريقة الصحيحة لطلب علم لتأكيد مستخدمي OAuth تلقائياً؟

شكراً لك

باتريك

ماذا تقصد بـ"التأكيد التلقائي"؟ هل تتجاوز تأكيد البريد الإلكتروني؟ أم تتجاوز نافذة التسجيل المنبثقة؟

الأول ممكن بالفعل. أما الثاني فهو قيد التنفيذ قريبًا في خطتنا.

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

هل الإعداد الجديد external_auth_skip_create_confirm من Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david مدعوم في OAuth2؟

بالتأكيد! إنه مدعوم في كل موفر مصادقة Discourse (حتى Facebook وGithub وGoogle وما إلى ذلك) :smiley: