يعرض هذا المستند كيفية استخدام Facebook Stories API لنشر القصص على صفحات فيسبوك.
لنشر قصة، سيقوم التطبيق بتنفيذ الخطوات التالية:
يفترض هذا الدليل أنك قرأت نظرة عامة على واجهة API الصفحات وقمت بتنفيذ المكونات المطلوبة، وقمت بإكمال دليل بدء الاستخدام بنجاح.
سيتعين على مستخدمي التطبيق أن يكونوا قادرين على تنفيذ المهمة CREATE_CONTENT في الصفحة الموضحة في رمز وصول الصفحة ومنح التطبيق الأذونات التالية:
pages_manage_postspages_read_engagementpages_show_listإذا كنت تستخدم حساب مستخدم نظام نشاط تجاري في طلبات API، فإن الإذن business_management سيكون مطلوبًا.
يجب تقديم صورة أو فيديو يناسب المواصفات التالية.
| الخاصية | المواصفات |
|---|---|
نوع الملف | .jpeg و.bmp و.png و.gif و.tiff |
حجم الملف | لا يمكن أن يتجاوز حجم الملفات 4 ميجابايت. بالنسبة إلى ملفات .png، نوصي ألا يتجاوز الحجم 1 ميجابايت وإلا فقد تظهر الصورة بدقة منخفضة. |
| الخاصية | المواصفات | ||
|---|---|---|---|
نوع الملف | .mp4 (موصى به) | ||
نسبة العرض إلى الارتفاع | 9 × 16 | ||
الحل | 1080 × 1920 بيكسل (موصى به). الحد الأدنى هو 540 × 960 بيكسل | ||
معدل الإطارات | 24 إلى 60 إطارًا في الثانية | ||
المدة | 3 إلى 90 ثانية. لا يمكن أن يتخطى مقطع ريلز الذي يتم نشره كقصة في صفحة فيسبوك 60 ثانية. | ||
إعدادات الفيديو |
| ||
إعدادات الصوت |
|
GET لعرض قائمة بالقصص، يجب تشغيل أرشيف القصص على فيسبوك
عند اختبار استدعاء API، يمكنك تضمين المعلمة access_token وتعيينها على رمز الوصول. مع ذلك، عند إجراء استدعاءات آمنة من التطبيق، استخدم فئة رمز الوصول.
يتم تنسيق أمثلة الرموز ضمن هذا المستند لإمكانية القراءة. استبدل القيم الغامقة والمائلة، مثل page_id بالقيم المتوفرة لديك.
لنشر قصة فيديو على صفحة فيسبوك، ستقوم بتهيئة جلسة تحميل الفيديو من خلال خوادم Meta وتحميل الفيديو على خوادم Meta ثم نشر قصة الفيديو.
لتهيئة جلسة التحميل، أرسل طلب POST إلى نقطة النهاية /page_id/video_stories حيث يكون page_id هو معرف صفحة فيسبوك، مع تعيين المعلمة upload_phase على start.
curl -X POST "https://graph.facebook.com/v25.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
عند نجاح العملية، يتلقى التطبيق استجابة JSON تتضمن معرف الفيديو وعنوان URL في فيسبوك حيث سيتم تحميل الفيديو.
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v25.0/video_id",
} الآن بعد تهيئة جلسة التحميل وتلقي عنوان URL التحميل، يمكنك تحميل الفيديو. يمكنك تحميل:
لتحميل ملف مستضاف، أرسل طلب POST إلى نقطة النهاية upload_url التي تلقيتها في خطوة التهيئة مع تضمين المعلمات التالية:
file_url تم تعيينه على عنوان URL ملف الفيديوتأكد من أن المضيف هو rupload.facebook.com.
سترفض API الآن الملفات المستضافة على المواقع التي تقيد الوصول عبر ملف robots.txt. يجب على المطورين التأكد من أن موقع الاستضافة يسمح لوكيل المستخدم "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" بالحصول على الملف المستضاف.
سيتم رفض الملفات المستضافة على شبكة CDN من Meta (على سبيل المثال، عناوين URL الخاصة بـ fbcdn). بدلاً من ذلك، يمكن للمطوّرين استخدام ميزة النشر في منشورات متعددة لنشر مقطع فيديو على صفحات متعددة من دون الحاجة إلى تحميل الفيديو إلى كل صفحة. راجع الإرشادات التفصيلية حول النشر في منشورات متعددة.
curl -X POST "https://rupload.facebook.com/video-upload/v25.0/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
لتحميل ملف محلي، أرسل طلب POST إلى نقطة النهاية upload_url التي تلقيتها في خطوة التهيئة مع تضمين المعلمات التالية:
offset على 0file_size على الحجم الإجمالي بالبايت للفيديو الذي يتم تحميله
curl -X POST "https://rupload.facebook.com/video-upload/v25.0/video_id" \
-H "offset: 0" \
-H "file_size: file_size_in_bytes" \
--data-binary "@/path/to/file/my_video_file.mp4"
عند نجاح التحميل، يتلقى التطبيق استجابة JSON مع تعيين success على true.
{
"success": true
} إذا تمت مقاطعة تحميل الفيديو، فيمكنك إعادة تشغيل التحميل أو استئنافه.
POST وقم بتعيين offset على 0. POST مع تعيين offset على القيمة bytes_transfered من عملية التحقق من الحالة.للتحقق من حالة الفيديو أثناء التحميل أو النشر، أرسل طلب GET إلى نقطة النهاية /video_id بمع تضمين المعلمة التالية:
fields على status
curl -X GET "https://graph.facebook.com/v25.0/video_id" \
-d "fields=status"
عند نجاح العملية، يتلقى التطبيق استجابة JSON تحتوي على:
status يحتوي على:
video_status بالقيمة ready أو processing أو expired أو erroruploading_phase بأزواج القيم والمفاتيح التالية:
status على in_progress أو not_started أو complete أو errorbytes_transfered على البايت التي تم تحميلها. يمكن استخدامها كقيمة لـ offset إذا تمت مقاطعة التحميل.processing_phase بأزواج القيم والمفاتيح التالية:
status على in_progress أو not_started أو complete أو errorprocessing_phase بأزواج القيم والمفاتيح التالية:
status على in_progress أو not_started أو complete أو errorpublish_status على published أو not_publishedpublish_time على طابع زمني بتنسيق UNIX للوقت الفعلي أو المنشور
تعرض الاستجابة التالية ملفًا تم تحميله بنجاح.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "in_progress",
"bytes_transfered": 50002
},
"processing_phase": {
"status": "not_started"
}
"publishing_phase": {
"status": "not_started",
"publish_status": "published",
"publish_time": 234523452
}
}
}
|
تعرض الاستجابة التالية خطأ حدث في مرحلة المعالجة.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "complete"
},
"processing_phase": {
"status": "not_started",
"error": {
"message": "Resolution too low. Video must have a minimum resolution of 540p."
}
}
"publishing_phase": {
"status": "not_started"
}
}
}
|
لنشر قصة فيديو إلى الصفحة، سترسل POST إلى نقطة النهاية /page_id/video_stories مع تضمين المعلمات التالية:
video_id على معرف الفيديو الذي تم تحميلهupload_phase على finish
curl -X POST "https://graph.facebook.com/v25.0/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
عند نجاح العملية، يتلقى التطبيق استجابة JSON تحتوي على أزواج القيم والمفاتيح التالية:
success على truepost_id على معرف منشور القصة
{
"success": true,
"post_id": 1234
}
تفضل بزيارة مرجع منشورات الصفحة
للتعرف على كيفية تحميل صورة في خوادم Meta باستخدام نقطة النهاية /page_id/photos. تأكد من تضمين المعلمة published وتعيينها على false.
لنشر قصة صورة على الصفحة، سترسل طلب POST إلى نقطة النهاية /page_id/photo_stories مع تضمين المعلمات التالية:
photo_id على معرف الصورة التي تم تحميلها
curl -X POST "https://graph.facebook.com/v25.0/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
عند نجاح العملية، يتلقى التطبيق استجابة JSON تحتوي على أزواج القيم والمفاتيح التالية:
success على truepost_id على معرف منشور القصة
{
"success": true,
"post_id": 1234
}
للحصول على قائمة بكل القصص في الصفحة وبيانات حول القصة، أرسل طلب GET إلى نقطة النهاية /page_id/stories حيث يكون page_id هو معرف الصفحة التي تريد عرضها.
curl -i -X GET "https://graph.facebook.com/v25.0/page_id/stories"
عند نجاح العملية، يتلقى التطبيق استجابة JSON تتضمن مصفوفة كائنات حيث يحتوي كل كائن على معلومات حول قصة منشورة في الصفحة. يحتوي كل كائن على أزواج القيم والمفاتيح التالية:
post_id على معرف منشور القصة المنشورةstatus على PUBLISHED وARCHIVEDcreation_time على طابع زمني بتنسيق UNIX عند نشر القصةmedia_type على video أو photomedia_id على معرف الفيديو أو القصة في منشور القصةurl على عنوان URL فيسبوك لمنشور القصة، مثل https://facebook.com/stories/8283482737484972
{
"data": [
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "video",
"media_id": "video_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "ARCHIVED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
...
],
}
يمكنك فلترة القصص حسب الحالة، إما منشورة أو مؤرشفة، والتاريخ باستخدام المعلمتين since وuntil.
تعرف على المزيد حول نقاط النهاية والمفاهيم الموضحة في هذا الدليل.