"تحميل: إنشاء" مفتاح API غير كافٍ؟

أنا أستخدم الكود التالي للتحميل عبر واجهة برمجة التطبيقات (API):

# واسأل Discourse أين يجب إرساله.
r = requests.post(
    f"https://{DISCOURSE}/uploads/generate-presigned-put", json=file_info, headers=HEADERS)
if r.status_code != 200:
    print(
        f"خطأ في السؤال عن مكان تحميل الصورة: تم الحصول على {r.status_code}", file=sys.stderr)
    sys.exit(1)

upload_url = r.json()['url']
upload_uid = r.json()['unique_identifier']

# الآن ضعه حيث طُلب منا.
r = requests.put(upload_url, data=image_data)
if r.status_code != 200:
    print(
        f"خطأ في تحميل الصورة إلى التخزين الخارجي: تم الحصول على {r.status_code}", file=sys.stderr)
    sys.exit(1)

# وأخبر Discourse أن الأمر نجح، واحصل على معرف يمكننا الرجوع إليه لاحقًا.
r = requests.post(f"https://{DISCOURSE}/uploads/complete-external-upload",
                  data=f'unique_identifier={upload_uid}', headers=HEADERS)
if r.status_code != 200:
    print(f"خطأ في إكمال التحميل: تم الحصول على {r.status_code}", file=sys.stderr)
    sys.exit(1)
image_id = r.json()['id']

يعمل هذا مع مفتاح واجهة برمجة تطبيقات “كل الوصول”، ولكن عندما أحاول استخدام مفتاح محدد بنطاق “إنشاء التحميلات” (uploads: create)، أحصل على خطأ 403 عند post إلى /uploads/generate-presigned-put.

إعجابَين (2)

إمساك رائع، سنقوم بحل هذه المشكلة، ضع في اعتبارك أن البروتوكول أصبح أكثر تعقيدًا الآن بعد أن نقوم بالتحميل مباشرة إلى s3.

إعجابَين (2)

لم أبدأ في استخدام واجهة برمجة التطبيقات (API) إلا بعد أن قمت بالتبديل، لذا على حد علمي، هذا هو المستوى الطبيعي من التعقيد. :slight_smile:

هل هناك مواقف لا يكون فيها ما يلي كافيًا؟

  1. POST معلومات الملف إلى /uploads/generate-presigned-put
    • تتضمن النتيجة عنوان URL عن بُعد للتحميل إليه (والذي يتضمن معلمات المصادقة) ومعرف تحميل فريد
  2. PUT بيانات الصورة إلى عنوان URL أعلاه
    • التعامل مع الخطأ إذا فشل هذا
  3. POST معرف التحميل من أعلاه إلى /uploads/complete-external-upload
    • النتيجة هي معرف صورة يمكن استخدامه في أماكن أخرى في واجهة برمجة التطبيقات (مثل إنشاء الشارات)

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

تم التأكيد! يعمل الآن. شكرًا!

3 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 20 ساعة. لم يعد يُسمح بالردود الجديدة.