أنا أقوم بإنشاء إجراء على GitHub للنشر في منتدى Discourse.
وجدت واجهة برمجة التطبيقات للنشر، غير أن الوثائق تشير إلى أن مستخدمي Discourse بحاجة إلى إنشاء مفتاح API من لوحة الإدارة، رغم أن المستخدمين غير المسؤولين ليس لديهم لوحة إدارة. هنا لدي عدة أسئلة:
هل تم تصميم مفتاح API حتى للمستخدمين غير المسؤولين؟
إذا كان هذا مخصصًا لإجراء GitHub، فمن المرجح أن يكون إنشاء مفتاح API محدد النطاق، يسمح فقط بالإجراءات التي تحتاجها، هو الخيار الأفضل. ولكن نعم، ستحتاج إلى أن تكون مديرًا لإنشاء هذا المفتاح.
للبرامج عبر سطر الأوامر (CLI)، إذا كان ذلك ضروريًا، يمكنك تشغيل خادم ويب محلي واستخدام عنوان URL من نوع http://localhost:XXXXX/callback. تتعامل التطبيق بطريقة مشابهة.
أعمل في هذا الفرع، ونجحت في تشغيل الأمر باستخدام localhost كعنوان إعادة توجيه. ومع ذلك، بعد الضغط على زر التفويض، أبلغت الصفحة https://meta.discourse.org/user-api-key عن خطأ في JavaScript ولم تتمكن من إكمال العملية. يعمل سكربت Ruby لكنه يفشل أيضًا عند إضافة معلمة auth_redirect.
إليك الاستثناء الذي أبلغت عنه وحدة تحكم المتصفح:
Uncaught TypeError: Cannot set property 'isReadOnly' of undefined
at Function.createCurrent (_application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js:44867)
at Function.current (_application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js:8816)
at Object.initialize (_application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js:70403)
at Object.i.initialize (_application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js:7001)
at _ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:49660
at i.each (_ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:67904)
at i.walk (_ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:67891)
at n.each (_ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:67858)
at n.topsort (_ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:67758)
at t._runInitializer (_ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js:49667)
سأرفق لقطة شاشة من تحليل كود JavaScript. يبدو أن siteAttributes متوقع أن تكون قيمة صحيحة، لكنها undefined. إذا كان لديك أي اقتراح لي، يرجى إخباري. شكرًا لك!
يُطلق JavaScript خطأً لأن طريقة POST لـ /user-api-key تُرجع 403، وطريقة build_not_found_page في وحدة التحكم لا تستدعي طريقة preload_anonymous_data التي تخزن القيمة المُحمَّلة مسبقًا.
غير مؤكد سبب استجابة الخادم بـ 403 مع <h1 class="title">عفوًا! هذه الصفحة خاصة.</h1> عندما أضفت معلمة auth_redirect. حاولت استخدام نفس النطاق لـ URL الاستدعاء (للتحقق من مشكلة تنفيذ السكريبتات عبر المواقع) وبروتوكول HTTPS، لكن دون جدوى.
ملاحظة للمستخدمين الآخرين: لقد قمت بإنشاء وحدة node يمكن استدعاؤها عبر أمر npx. ستقوم بإنشاء مفتاح API مع نطاق write. آمل أن يساعد ذلك في عملية إعداد الأنظمة التي تحتاج إلى رمز Discourse API.
تعديل: مرحبًا @KengoTODA. كان كود GitHub الخاص بك مفيدًا في توجيهي إلى الاتجاه الصحيح. لا زلت أعمل على حل بعض الأمور، ثم سأكتب ملخصًا لكيفية نجاحي في جعل الأمور تعمل.