مواصفات مفاتيح API للمستخدم

تميل عمليات إعادة التوجيه المفتوحة إلى جعل الناس متوترين، وفي هذه الحالة إذا أضفت Nextcloud، فهذا يعني أن الأشخاص سيكونون قادرين على استخدام عنوان URL على Nextcloud لإنشاء مفتاح على Discourse ثم إعادة التوجيه مرة أخرى إلى Nextcloud.

3 إعجابات

في الخطوة 6، ما هو استدعاء واجهة برمجة التطبيقات الذي تشير إليه تحديدًا؟
أو إذا كان أي شخص آخر يعرف، فيرجى الإجابة!

تشير استدعاءات واجهة برمجة التطبيقات (API) المشار إليها في الخطوة السادسة إلى أي استدعاءات تريد إجراؤها. هذا يشير فقط إلى الاستدعاءات التي تقوم بالأشياء التي تريد القيام بها بالفعل مع موقع discourse.\n\nفي حالتي، كان لدي تطبيق منفصل يتفاعل مع موقع discourse - يقوم بأشياء مثل إنشاء مشاركات على موقع discourse بناءً على إجراء يتخذه المستخدم في التطبيق المنفصل. يقوم التطبيق بتسجيل دخول المستخدم، يقوم المستخدم ببعض الأشياء، ثم يقوم التطبيق بإجراء استدعاءات API من نوع POST و PUT لإنشاء / تحرير مشاركات discourse من هذا المستخدم.

حسناً. في حالتي، أريد فقط أن يقوم المستخدم بتسجيل الدخول إلى موقعي الإلكتروني، ثم يقوم بتفويض Discourse، ثم يعود، وبعد ذلك يمكن لموقعي الإلكتروني ببساطة قراءة اسم المستخدم والبريد الإلكتروني والصورة الرمزية والمعرف وما إلى ذلك وإنشاء مستخدم جديد على موقعنا. @JQ331

إذًا أنت في المكان الخطأ، لا يمكنك استخدام مفاتيح واجهة برمجة تطبيقات المستخدم لهذا الغرض.
بدلاً من ذلك، ستحتاج إلى تكوين Discourse كموفر DiscourseConnect وموقعك الإلكتروني كعميل DiscourseConnect. انظر Use Discourse as an identity provider (SSO, DiscourseConnect)

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

هل أنا على حق في القول بأنني سأحتاج إلى الوصول إلى المفتاح السري للموقع لشيء كهذا؟

لا يوجد شيء اسمه “المفتاح السري” ولكنك ستحتاج بالفعل إلى وصول المسؤول إلى Discourse لتكوين هذا.

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

هنا مزيد من المعلومات حول حدود المعدل.

إذا كنت تستضيف مع Communiteq، فيرجى الاتصال بمكتب الدعم الخاص بنا عبر لوحة التحكم الخاصة بك لإعداد ذلك.

مرحباً @RGJ ، شكراً على الرد. شركتي لديها خطة Standard و Business ولكنني لا أرى مكتب الدعم في لوحة التحكم. بدلاً من ذلك، هل قمت بإرسال بريد إلكتروني إلى team@discourse.org بشكل صحيح؟

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

إذا كنت مستضافًا معنا في Discourse (بدلاً من @RGJ في Communiteq)، فهذه بالفعل هي الطريقة الصحيحة للتواصل مع فريق الدعم الخاص بنا. :+1: :slightly_smiling_face:

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

أهلاً!
أنا أكتب تطبيقًا يستهلك واجهة برمجة التطبيقات هذه.
هل هناك طريقة للحصول على معلومات المستخدم (اسم المستخدم، في الغالب) من هذا؟
أم أحتاج إلى طلب اسم المستخدم يدويًا، ثم طلبه لاحقًا؟

أهلاً بك، @gilice.

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

قد يساعدك هذا الهندسة العكسية لواجهة برمجة تطبيقات Discourse.

ولكن إذا كنت تحاول الحصول على اسم مستخدم، فإن إحدى الطرق للقيام بذلك هي البحث عن عنوان البريد الإلكتروني في مسار المسؤول/المستخدمين.

سيساعد إذا قلت ما تحاول فعله.

مرحباً! شكراً على الرد، ربما كان ينبغي أن أصيغها بشكل أفضل.
السؤال الذي أردت طرحه: هل يمكنني الحصول على مفتاح واجهة برمجة التطبيقات الخاص بالمستخدم. بعد ذلك، هل يمكنني الحصول على ملف تعريف المستخدم (اسم المستخدم، صورة الملف الشخصي، إلخ) دون طلب اسم المستخدم الخاص به واستخدام طريقة getUser؟

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

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

مرحباً بالجميع،
في تطبيقي، أستخدم مفاتيح واجهة برمجة تطبيقات المستخدم لتحقيق بعض وظائف Discourse. لقد قمت عن طريق الخطأ بتفويض تسجيل الدخول (باستخدام واجهة برمجة التطبيقات /user-api-key/new) بحساب Discourse خاطئ.

لقد قمت بإلغاء الوصول إلى التطبيق من حساب Discourse الخاطئ. ومع ذلك، عندما أحاول التفويض باستخدام حساب Discourse الصحيح، أتلقى خطأ. عندما نظرت في السجلات، وجدت الخطأ التالي:

\u003e ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_user_api_keys_on_client_id" DETAIL: Key (client_id)=\n\nبناءً على الخطأ، أفترض أنه لا يمكننا ربط حسابين للمستخدمين بنفس معرف العميل.

هل هناك أي طريقة للتغلب على هذه المشكلة؟

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

شكرا!

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

ماذا يعني ذلك بالضبط؟

أنا أكتب تطبيقًا يطلب البيانات نيابة عن مستخدم عبر مفتاح واجهة برمجة تطبيقات المستخدم. الهدف هو تجنب مشاكل تحديد المعدل. متى سيواجه التطبيق مشاكل في تحديد المعدل بالضبط؟

أعتقد أنك تبحث عن شيء كهذا:

3 إعجابات

نعم! هذا ما أردته. شكراً جزيلاً!!!

إعجابَين (2)

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

GitHub - discourse/discourse_api_docs: Discourse API Documentation

بالنسبة للمطورين في المراحل اللاحقة، نفضل استخدام openapi لإنشاء الواجهة وواجهة برمجة التطبيقات التي نحتاجها.