تأكيد الوصول عبر واجهة برمجة التطبيقات إلى إعدادات موقع حدود التأليف

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

الإعدادات التي أحاول تأكيد الوصول إليها تشمل:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled
create_tag_allowed_groups
tag_topic_allowed_groups

تحققت أولاً من /site.json، وهو متاح ومفيد لإشارات القدرات العامة، لكنه لا يبدو أنه يكشف عن إعدادات حدود التأليف المحددة هذه.

باستخدام مفتاح API لمستخدم روبوت غير مسؤول، أرجعت هذه المسارات 404:

/site_settings.json
/admin/site_settings.json
/admin/site_settings

بعد جعل مستخدم الروبوت مسؤولاً، عملت هذه المسارات:

/admin/site_settings.json
/admin/site_settings

باستخدام الرؤوس التالية:

Accept: application/json
Api-Key: ...
Api-Username: discussbridge-bot
X-Requested-With: XMLHttpRequest

لا يزال /site_settings.json يرجع 404.

أسئلتي:

  1. هل /admin/site_settings.json هو مسار واجهة برمجة التطبيقات (API) المتوقع لقراءة إعدادات الموقع الحالية؟
  2. هل يتطلب ذلك صلاحيات مستخدم مسؤول، أم أن هناك نطاقاً مدعوماً لقراءة فقط أو تفصيلياً لواجهة برمجة التطبيقات (API) لهذا الغرض؟
  3. هل /site_settings.json متقادم، أو يعتمد على إضافات، أو لا يُتوقع وجوده؟
  4. للتكاملات، هل النمط الموصى به هو استخدام مفتاح تشخيص/إعداد ذي صلاحيات مسؤول لقراءة الإعدادات، بينما استخدام مفتاح نشر ذي صلاحيات أقل للعمل العادي على مزامنة المواضيع/المشاركات؟

الهدف ليس تغيير الإعدادات عبر واجهة برمجة التطبيقات (API)، بل فقط قراءتها أثناء تشخيص الإعداد حتى يتمكن التكامل

  1. هو /admin/site_settings.json

  2. يجب أن تكون مسؤولاً، باستثناء الإعدادات التي تحتوي على client: true، والتي يمكن العثور عليها في /site/settings.json

يمكن العثور على جميع الإعدادات التي تحتاجها، باستثناء الإعدادين الأخيرين، في /site/settings.json.

ولكن بالنسبة للمجموعات المسموح بها، يعمل الآلية بشكل مختلف: إذا قمت بطلب /site.json كمستخدم معين، يمكنك فحص can_tag_topics وcan_create_tags.

3.据我所知,/site_settings.json 从未存在过。

  1. 我认为,针对你的特定用例,你可以使用普通用户并采用 #2 中的模式来解决问题。

شكرًا لك @RGJ ، كان هذا بالضبط التمييز المفقود.

قمت باختبار المسارات على منتداكي ويمكنني تأكيد:

/site/settings.json

/site.json

تعمل مع مفتاح البوت العالمي/الإداري الحالي الخاص بي.

يكشف /site/settings.json عن حدود التأليف الرقمية التي أحتاجها، بما في ذلك:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled

و /site.json، عند الطلب كمستخدم بوت، يكشف عن:

can_tag_topics
can_create_tag

يبدو أن هذا هو النمط الصحيح لتشخيص الإعداد.

متابعة واحدة: قمت أيضًا باختبار مفتاح API دقيق النطاق مخصص لنشر مواضيع/مشاركات/فئات/وسوم:

categories:list
categories:show
posts:edit
posts:list
search:show
tags:list
topics:write
topics:update
topics:read
topics:status

مع هذا المفتاح الدقيق:

/t/{topic_id}.json يعمل
/tags.json          يعمل
/categories.json    يعمل

لكن:

/site/settings.json  403
/site.json           403

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

هل أغفلت نطاقًا دقيقًا أو تكوين URL مسموح به لـ /site/settings.json و /site.json؟

نظرًا لأن المفاتيح مخصصة لمستخدم بوت إداري، فإن كل مفتاح قادر على الإدارة على مستوى المستخدم. يحدد المفتاح الدقيق فقط نقاط نهاية API التي يمكن استدعاؤها.

إذا لم يكن الأمر كذلك، يبدو أن إعدادي العملي أثناء الاختبار هو:

  1. مفتاح نشر عالمي حالي
  2. مفتاح تشخيص عالمي لفحوصات الإعداد التي تقرأ إعدادات الموقع
  3. مرشح مفتاح نشر دقيق النطاق للمزامنة العادية للمواضيع/المشاركات/الوسوم

إذا ثبت أن مفتاح النشر الدقيق كافٍ للمزامنة العادية، يمكن تقاعد مفتاح النشر العالمي الأصلي، تاركًا:

  1. مفتاح نشر دقيق النطاق للمزامنة أثناء التشغيل
  2. مفتاح تشخيص عالمي/قادر على الإدارة لفحوصات الإعداد

لكن ذلك يعتمد على ما إذا كان المفتاح الدقيق يمكن أن يغطي جميع عمليات النشر العادية، وما إذا كان /site/settings.json / /site.json بحاجة إلى البقاء في جانب التشخيص.