تدفق OAuth 2 لـ imgur في إضافة Discourse

مرحباً،

أنا أقوم ببناء إضافة محددة جداً لمنصة Discourse الخاصة بنا، وكان لدي بضعة أسئلة.

في مرحلة ما، ستضطر الإضافة إلى إرسال مجموعة من صور المواضيع في Discourse إلى موقع Imgur. الجزء المسؤول عن جمع هذه الصور مكتمل بالفعل.

الآن أحاول المصادقة على واجهة برمجة تطبيقات Imgur باستخدام تدفق OAuth2 الخاص بهم. لقد أنشأت بالفعل واجهة مستخدم للمسؤول للإضافة تسمح لك بالضغط على زر لتمكين الإضافة على حساب Imgur الخاص بك. بمجرد تسجيل دخول المستخدم، يتم استدعاء عنوان URL للاستدعاء (المُعدّ ليكون مثيل Discourse الخاص بي ومساراً محدداً أنشأته في الإضافة) مع رمز الوصول (انظر المثال).

http://localhost:3000/admin/plugins/plugin_name/callback#access_token=<token>&...

سؤالي هو: كيف يمكنني استعادة هذا الرمز؟ ليس لدي أي فكرة عن كيفية البدء.

فهمي هو أنه نظراً لأن الرمز يُرجع في معلمة تجزئة (hash)، فيجب أن يتم ذلك على جانب JavaScript. حاولت إعداد وحدة تحكم ومسار لعنوان URL للاستدعاء الخاص بي، لكنني لم أستطع معرفة كيفية قراءة عنوان URL (وخاصة الجزء الخاص بالتجزئة) من هناك. (لم أجد أي شيء مفيد في توثيق Emberjs أو Stackoverflow). حاولت إعداد مستمعي أحداث مختلفين، لكنهم لا يبدون وكأنهم يُفعّلون أبداً.

سؤالي الثاني هو: أين يجب أن أخزن الرمز ورمز التحديث؟ هل يمكنني حفظه كإعداد للنظام من الإضافة؟ سمعت عن PluginStore، لكنه متاح فقط في Ruby (وهو ما يعني إنشاء نقطة نهاية للعميل لإرسال هذه الرموز إلى الخادم). أيضاً، هل هذا آمن من منظور أمني؟

شكراً!

تعديل: كان هناك خطأ مطبعي في اسم ملف المسار الخاص بي، حيث كان ينقص حرف s، وهذا هو السبب في عدم تفعيل أي شيء…

لن تتمكن من تحقيق ذلك عبر http إلى localhost. يُنصح بمحاكاة https باستخدام أداة مثل https://ngrok.com/ أو تشغيل خادم التطوير الخاص بك في السحابة بوضع https مع نطاق.

ظننت أنني سأحتاج إلى ذلك أيضًا، لكنني أُوجَّه بشكل صحيح إلى عنوان URL المحلي الخاص بي وأرى الرمز في عنوان URL.

نعم، أنت محق، يمكن للعميل استخدام HTTP. المشكلة هي أنه يمكن اعتراضه وقراءة الرموز المميزة، لذا لا فائدة من استخدام OAuth2 من الأساس :slight_smile: . شخصيًا، أشعر براحة أكبر أيضًا عند العمل مع البروتوكول النهائي الكامل في بيئة التطوير لأعرف أن كودي يعمل.

أجل، أنا أتفق بالتأكيد، كان هذا لغايات التطوير فقط في هذه المرحلة. وبالطبع، في بيئة الإنتاج سأستخدم https :slight_smile: