في الأساس، أحاول تمكين المستخدمين من التحقق من ملكيتهم لحسابات تواصل اجتماعي لا تدعم OpenID أو OAuth (مثل حساب Riot مثلاً). ما هو أفضل نهج للقيام بذلك؟ هل من الممكن أن يستخدم المستخدم Discourse كمزود OAuth لتطبيق خارجي يقوم بتعديل قاعدة البيانات؟ أنا لست على دراية كافية بـ Discourse بعد، لذا أحاول التفكير في أفضل طريقة لتنفيذ شيء من هذا القبيل.
أعتقد أن @falco لديه خبرة مع Riot؟
أوه، هذه مشكلة مثيرة للاهتمام. أحد الأساليب التي جربناها كان استخدام Keybase لهذا الغرض. فهم يمتلكون بالفعل نظامًا قويًا لإثبات الهوية يعمل مع العديد من المنصات. يمكنك قراءة تجاربنا في إثبات Keybase في Discourse. غير متأكد كيف سيكون الوضع الآن بعد أن اشترته Zoom.
هذا الجزء يبدو غريبًا بعض الشيء. كيف يمكن لـ Discourse أن يكون مزود هوية (IdP) لـ Riot لمساعدتك في إثبات ملكية حساب Riot/Matrix موجود مسبقًا على Discourse؟
هل يمكنك شرح ذلك أكثر قليلاً؟ كنت أبحث في مصادقة موحدة (SSO) لـ Matrix أمس، وأخيرًا أصبح لديهم شيء الآن. فهم يطبقون كلاً من SAML، وعلى فرع develop تطبيق oAuth2. لا يمكن لـ Discourse التحدث كخادم في أي منهما، بل فقط كعميل، لذا كنت أفكر إما في جعل Discourse يعمل كخادم oAuth2 أو إضافة دعم لبروتوكول SSO الخاص بـ Discourse في Synapse. غير متأكد مما إذا كان هذا سيُلبي احتياجاتك…
هل يوجد عنوان URL عام لدى Riot يمكن للمستخدم التحكم به؟ مثل سيرة ذاتية عامة يمكن للمستخدم إدخال كود فيها؟ عندها يمكن لإضافة Discourse توليد كود يقوم المستخدم بإدراجه في سيرته الذاتية، وعند إدخال اسم مستخدم Riot الخاص به، يتحقق من وجود الكود في URL/<riot-username>/bio؟
مثل هذا النظام سيمكن من إضافة ذات غرض عام إلى حد ما يمكن تكوينها لعدة مواقع طرف ثالث عبر بعض إعدادات النظام.
المعيار الذي أؤيد اعتماده هو «الرابط ثنائي الاتجاه rel="me"». أضف رابطًا من تلك الصفحة إلى ملفك الشخصي في Discourse، ورابطًا من ملفك الشخصي في Discourse إلى تلك الصفحة؛ حيث يقوم كلا النظامين بفحص عنوان URL الآخر، ويرى rel=me فيعلّمه بعلامة
مُتحقق منه.
يمكن وضع حالات خاصة لسحب حقل السيرة الذاتية من المنصات التي لا تطبق هذا المعيار.
أقصد استخدام ديسكورد كمزوّد هوية (IdP) لبرنامجي المستقل الخاص بي. أنا فقط غير متأكد من أفضل طريقة لربط أشياء مثل معرف Riot Games نظرًا لأنهم لا يمتلكون حاليًا حل OAuth متاح للعامة. أعرف أنهم أعلنوا عن RSO مؤخرًا، لكنهم لم يحددوا تاريخًا متاحًا للعامة بعد.
حاليًا، لكي تقوم تطبيقات الطرف الثالث بـ “التحقق” من حساب Riot، يتطلب الأمر من المستخدمين تسجيل الدخول إلى عميل League of Legends وتغيير حقل ضمن تبويب الإعدادات. كنت أحاول فقط ابتكار طريقة للانتقال من ديسكورد إلى واجهة برمجة تطبيقات League ثم إضافة حقل الملف الشخصي المخصص بمجرد التحقق منه.
إليك الجزء الذي يتضمن الكود للرجوع إليه. في الأساس، يمكنني بعد ذلك استدعاء واجهة برمجة تطبيقات League والتحقق مما إذا كانت قيمة هذا الكود تطابق القيمة التي أُمروا باستخدامها.
أيضًا، أنا أستخدم نظام تسجيل دخول SAML لديسكورد لأنه مرتبط ببقية موقعي، وكنت أرغب في وجود طريقة لإضافة أسماء مستخدمين Discord “مُتحقق منها” بطريقة مماثلة. مرة أخرى، أنا لست متأكدًا تمامًا من كيفية جعل المستخدم المسجل الدخول على ديسكورد يطلب OAuth عبر Discord OAuth ثم تغيير القيمة من جانب ديسكورد.
آمل أن يكون هذا منطقيًا ويوضح ما أحاول تحقيقه. إذا كنت لا تزال بحاجة إلى مزيد من المعلومات حول ما أحاول فعله، يمكنني تقديم المزيد. أنا أرغب فقط في إظهار الحسابات المُتحقق منها في الملفات الشخصية. أخطط لدعم Minecraft (Mojang) وDiscord وRiot Games (League of Legends)، ولكن لاستخدامي، أحتاج إلى أن تكون هذه القيم مُتحققًا منها لتجنب انتحال الهوية.
أعتقد أن رابط Twitch ↔ Riot المستخدم في إصدارات تجربة Valorant كان يعتمد على OAuth2، عبر login. غير متأكد مما إذا كان بإمكانك إنشاء client_id بنفسك.
حسنًا، يبدو ذلك قابلًا للتنفيذ باستخدام إضافة مخصصة!
يجب أن يعمل ذلك باستخدام التكامل الأصلي الخاص بنا مع Discord. ما عليك سوى تمكين تسجيل الدخول عبر Discord، وسيتمكن المستخدمون من ربط ملفاتهم الشخصية على Discord من خلال صفحات ملفاتهم الشخصية.
نعم، حاليًا ليس متاحًا للعامة ولا يزال في مراحله الأولى. تحدثوا عنه في هذه المقالة https://www.riotgames.com/en/DevRel/rso على موقع المطورين الخاص بهم.
هذا ما فكرت فيه، لذا سأحاول جعل ذلك يعمل.
السبب الوحيد الذي يمنعني من استخدام تكامل Discord الأصلي هو أن باقي مواقع الويب الخاصة بي تعتمد بالفعل على المصادقة من خلال مزوّد هوية رئيسي (IdP)، وأود أن يكون للمستخدمين حساب واحد فقط لموقعي بأكمله إذا كان ذلك منطقيًا. سأحاول جعل إضافة League of Legends تعمل وأرى مدى صعوبة تنفيذ ما أفكر فيه. لم أكن متأكدًا تمامًا مما إذا كانت هناك طرق للوصول إلى ملفات تعريف المستخدمين وتعديلها من تطبيق PHP أو ما شابه. في النهاية، كنت أفكر فقط في استخدام PHP لنظام تسجيل دخول بسيط يعتمد على OAuth حيث يسجل المستخدمون الدخول عبر Discord، لكنني أواجه مشاكل في كيفية “إخبار” سكريبت PHP بالمستخدم الذي بدأ الطلب، ما لم أتمكن من بدء الطلب عبر Discourse بطريقة ما، ثم يتحقق سكريبت PHP من أنه شرعي.
شكرًا جزيلاً لكم جميعًا على ردودكم هنا، أنا ما زلت جديدًا في إدارة Discourse الخاصة بي وأقدر كل المساعدة. ![]()
حسناً، سأحتاج إلى التحقق مما إذا كانت الإضافات تتمتع بصلاحيات أكبر مقارنة بالبرامج الخارجية عبر واجهة برمجة التطبيقات، حيث لم أجد أي طريقة لتعديل حقل مستخدم عبر واجهة برمجة التطبيقات على https://docs.discourse.org/.
