بصفتي مشرفًا، أود استخدام واجهة برمجة التطبيقات (API) لمنتدى Discourse. في العادة، كانت مفعلة وتمكنت من الحصول على مفتاح API. استخدمت هذا النص البرمجي:
تمكنت من استرداد مفتاح طوله 32 حرفًا (هل هذا صحيح؟)، وفي إعدادات الأمان لحسابي، يظهر التطبيق بهذه الأذونات:
قراءة الكل
كتابة الكل
تحديثات مباشرة
إرسال إشعارات إلى خدمات خارجية
قراءة ومسح الإشعارات
قراءة معلومات جلسة المستخدم
إنشاء رمز تسجيل دخول لمرة واحدة
يبدو هذا جيدًا جدًا. ومع ذلك، عندما أحاول الوصول عبر نص برمجي باستخدام:
from pydiscourse import DiscourseClient
client = DiscourseClient(
'https://forum.example.com',
api_username='tflidd',
api_key='388b79103056fede1d3223dae032df99')
client.user("tflidd")
إنها مكتبة بايثون، لذا أفترض أنها يجب أن تعمل. مفتاح API له هذا التنسيق المحدد، وهو ليس المفتاح الفعلي. أحصل على خطأ يفيد بأن اسم المستخدم أو مفتاح API غير صالح.
هل أستخدم اسم المستخدم الخاص بي أم اسم التطبيق؟
هل مفتاح API على الأقل بالتنسيق الصحيح، ربما حدث خطأ في فك التشفير؟
إذا استخدمت curl كما هو موضح هنا (Discourse-user-notes API - #4 by codetricity):
curl https://forum.example.com/t/95783.json \ -H 'Api-Key: 388b79103056fede1d3223dae032df99' \ -H 'Api-Username: tflidd'
أحصل أيضًا على خطأ:
{"errors":["You are not permitted to view the requested resource. The API username or key is invalid."],"error_type":"invalid_access"}
إذا فتحت نفس الرابط مع ملف JSON في متصفحي حيث تم تسجيل دخولي، يعرض متصفح الويب كائن JSON الصحيح. لذا فإن الموضوع موجود ولدي أذونات للوصول إليه (كان هذا حتى موضوعًا عامًا).
أنا مجرد مشرف، وليس لدي وصول مباشر للمسؤول. يمكنني طلب المزيد من المعلومات من السجلات، إذا كان لديك مؤشرات حول ما يجب البحث عنه.
في حال كان الأمر مهمًا، فإن الإصدار المثبت هو: 3.2.0.beta4-dev