مرحباً
أتساءل عما إذا كان هناك شيء أحاول القيام به ممكناً.
إذن، أرغب في ربط حسابات Minecraft بحسابات Discourse بنفس الطريقة التي يمكنك بها إضافة Discord و Google وما إلى ذلك، ولكن Minecraft لا يحتوي حالياً على نظام OAuth (ربما بمجرد انتقال الجميع إلى حساب Microsoft ولكن هذا سيكون انتظاراً طويلاً). لذا، فإن النظام الذي أقترحه هو جعل المستخدم يدخل رمزاً تم إنشاؤه عشوائياً يحصل عليه داخل اللعبة. هل ستكون هناك طريقة لإضافة هذا إلى حسابه مثل أي حساب آخر متصل؟ سأقوم على الأرجح بتنظيمها بشكل مشابه لكيفية عمل https://mc-oauth.net/ ولكن بدلاً من تسجيل الدخول، سيستخدمون أمراً في الدردشة.
إذا كان هذا سيكون ممكناً، فهل لديك أي اقتراحات حول كيفية تحقيق ذلك؟ أنا بحاجة تقريباً إلى نافذة منبثقة تطلب الرمز → التحقق من الرمز → الحصول على UUID وتخزينه كمعرف حساب خارجي.
تحرير: في الواقع، يبدو أنه مع الانتقال إلى حسابات Microsoft، قد أتمكن من تعديل إضافة حساب Microsoft الحالية لتخزين معرفات Minecraft الفريدة. سأضطر إلى التحقق.
ربما يمكنك استخدام حقول مستخدم مخصصة لهذا؟ Creating and configuring custom user fields
يمكن تعيين حقل مستخدم ليكون مطلوبًا عند التسجيل، والذي سيقبل الرمز الذي تم إنشاؤه عشوائيًا. يمكن أيضًا تعديل حقول المستخدم في تفضيلات الشخص بعد التسجيل، إذا احتاجت الحسابات الحالية إلى إضافة الرمز.
إعجابَين (2)
أوه، لم أفكر في هذا في الواقع. شكراً على الفكرة - السبب الرئيسي الذي جعلني أبحث عن نهج OAuth هو أنني أستطيع استرداد المستخدم بواسطة المعرف الخارجي. سأرى ما إذا كان بإمكاني استرداد مستخدم بواسطة حقل مستخدم.
تعديل: حسناً، قد تكون لدي طريقة للقيام بذلك باستخدام الحقول المخصصة. ربما سأضطر فقط إلى استخدام قاعدة بيانات خارجية وإنشاء طريقتي الخاصة لطلب مستخدم Discourse من معرف Minecraft الخاص بهم. أنا فقط لا أعرف ما يكفي عن قيود Discourse لمعرفة ما إذا كانت هناك طريقة أفضل.
تعديل 2: هممم، لا أرى طريقة لتعديل حقول المستخدم المخصصة عبر واجهة برمجة التطبيقات. كنت أفضل أن يتم تعيينها فقط بواسطة واجهة برمجة التطبيقات، لذلك من المضمون أنهم يمتلكون الحساب. قد أحتاج فقط إلى إنشاء قاعدة بيانات خارجية والقيام بربط الحسابات من خلال شيء آخر.
إعجاب واحد (1)
يبدو أن ما تريد فعله هو تطبيق موفر OAuth خاص بك؟
يشبه إلى حد كبير المخطط هنا:
يبدو أن آلية مخصصة الخاصة بك ستحل محل “دليل OAuth2”.
(قد يكون الأمر أبسط باستخدام DiscourseConnect)
بالطبع، كل هذا يعتمد على كيفية تطبيق المصادقة للموقع بالفعل…
من ناحية أخرى، قد يكون القيام بذلك معقدًا جدًا - نحن ندعم حقولًا مخصصة للموظفين فقط قد تكون مناسبة هنا.
إعجابَين (2)
نعم، أعتقد أن سؤالي الرئيسي الوحيد هو ما إذا كان سيتمكن الموظفون فقط من تعيين تلك الحقول عبر مسار API؟ لم أتمكن من العثور على طريقة للقيام بذلك تلقائيًا.
لا أرى إدخالاً في docs.discourse.org لهذا. تتم جميع التغييرات التي تم إجراؤها بواسطة متصفح الويب باستخدام نفس واجهة برمجة التطبيقات، لذا فإن نصيحتي هي هندسة عكسية لما هو مطلوب.
إعجاب واحد (1)
أوه، هذا مفيد حقًا - شكرًا لك على المشاركة! لذلك، فكرت وأجريت المزيد من البحث حول كيف يمكنني القيام بذلك، وما أفكر فيه هو استخدام المعلمة state مع OAuth لجعل الأشخاص يسجلون الدخول إلى حساب Discourse الخاص بهم ثم استخدام هذه الحالة لربط معرف UUID في Minecraft. ستكون الحالة مجرد قيمة تم إنشاؤها عشوائيًا وستكون موجودة في قاعدة بيانات مع معرف UUID الخاص بـ Minecraft. أعتقد أن هذا النهج يجب أن يعمل. شكرًا للجميع على كل الأفكار والموارد!
إعجاب واحد (1)
نظرًا لأنني لم أكن بحاجة إلى الوصول إلى Minecraft UUID من داخل Discourse نفسها، فقد انتهى بي الأمر بإنشاء نظام خارجي يتكامل مع Discourse SSO. أقدر المساعدة، وإذا كنت ترغب في رؤية ما توصلت إليه، فقد شاركته هنا. قد أعود إلى هذا في يوم من الأيام بمجرد أن تصبح حسابات Microsoft إلزامية لجميع مستخدمي Minecraft، حيث سيكون هناك بالتأكيد طريقة لاستخدام واجهات برمجة التطبيقات الخاصة بهم لتحقيق نفس الميزة.
إعجاب واحد (1)