خطأ 403 أثناء استدعاءات API المتعددة

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

واجهة برمجة تطبيقات التعليق

{{base_url}}/admin/users/316/suspend?api_key={{api_key}}&api_username={{api_username}}

جسم الطلب

{
    "suspend_until": "3020-04-17",
    "reason": "inactive"
}

الاستجابة - 403 ممنوع

تحديث البريد الإلكتروني

{{base_url}}/users/{username}/preferences/email?api_key={{api_key}}&api_username={{api_username}}

جسم الطلب

{
    "email": "discourse1@example.com"
}

الاستجابة - 403 ممنوع

يجب عليك وضع مفتاح API في الرأس، وليس في الرابط.

حاولت الأمر أيضًا. أحصل على نفس الخطأ 403 Forbidden مع BODY-> [“BAD CSRF”]

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

  • يجب تغيير api_key إلى api-key (أو Api-Key)
  • يجب تغيير api_username إلى api-username (أو Api-Username)

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