เอกสารนี้จะแสดงวิธีใช้ Facebook Stories API เพื่อเผยแพร่สตอรี่บนเพจ Facebook
เมื่อต้องการเผยแพร่สตอรี่ แอพของคุณจะต้องทำตามขั้นตอนต่อไปนี้
คู่มือนี้จะถือว่าคุณได้อ่านภาพรวมของ API เพจ และใช้ส่วนประกอบที่จำเป็น รวมถึงทำความเข้าใจคู่มือเริ่มต้นใช้งานเรียบร้อยแล้ว
ผู้ใช้แอพของคุณจะต้องสามารถดำเนินงาน CREATE_CONTENT บนเพจที่แสดงในโทเค็นการเข้าถึงเพจ และให้สิทธิ์การอนุญาตแก่แอพของคุณดังต่อไปนี้
pages_manage_postspages_read_engagementpages_show_listหากคุณใช้ผู้ใช้ระบบธุรกิจในคำขอ API ของคุณ จำเป็นต้องมีสิทธิ์การอนุญาต business_management ด้วย
คุณต้องจัดเตรียมภาพถ่ายหรือวิดีโอที่ตรงตามข้อกำหนดต่อไปนี้
| คุณสมบัติ | ข้อกำหนดเฉพาะ |
|---|---|
ประเภทไฟล์ | .jpeg, .bmp, .png, .gif, .tiff |
ขนาดไฟล์ | ไฟล์ต้องมีขนาดไม่เกิน 4 MB สำหรับไฟล์ .png เราขอแนะนำว่าไม่ควรมีขนาดเกิน 1 MB ไม่เช่นนั้นรูปภาพอาจแตกเป็นพิกเซล |
| คุณสมบัติ | ข้อกำหนดเฉพาะ | ||
|---|---|---|---|
ประเภทไฟล์ | แนะนำให้ใช้ .mp4 | ||
อัตราส่วนกว้างยาว | 9 x 16 | ||
ความละเอียด | แนะนำว่าควรมีความละเอียดที่ 1080 x 1920 พิกเซล ความละเอียดขั้นต่ำคือ 540 x 960 พิกเซล | ||
อัตราเฟรม | 24 ถึง 60 เฟรมต่อวินาที | ||
ระยะเวลา | 3 ถึง 90 วินาที คลิป Reels ที่เผยแพร่เป็นสตอรี่บนเพจ Facebook จะต้องมีความยาวไม่เกิน 60 วินาที | ||
การตั้งค่าวิดีโอ |
| ||
การตั้งค่าเสียง |
|
GET เพื่อดูรายการสตอรี่ คุณจะต้องเปิดคลังสตอรี่ Facebook 
เมื่อทดสอบการเรียกใช้ API คุณสามารถเพิ่มพารามิเตอร์ access_token ที่ตั้งเป็นโทเค็นการเข้าถึงของคุณได้ ทั้งนี้ เมื่อดำเนินการเรียกใช้แบบปลอดภัยจากแอพของคุณ ให้ใช้คลาสโทเค็นการเข้าถึง
ตัวอย่างโค้ดภายในเอกสารนี้มีการจัดรูปแบบเพื่อให้อ่านง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น page_id ด้วยค่าของคุณ
เมื่อต้องการเผยแพร่สตอรี่แบบวิดีโอบนเพจ Facebook คุณจะต้องเริ่มต้นเซสชั่นการอัพโหลดวิดีโอด้วยเซิร์ฟเวอร์ Meta แล้วอัะโหลดวิดีโอไปยังเซิร์ฟเวอร์ Meta จากนั้นก็เผยแพร่สตอรี่แบบวิดีโอ
เมื่อต้องการเริ่มต้นเซสชั่นการอัพโหลด ให้ส่งคำขอ POST ไปยังตำแหน่งข้อมูล /page_id/video_stories โดยที่ page_id คือ ID เพจ Facebook ของคุณ โดยตั้งค่าพารามิเตอร์ upload_phase เป็น start
curl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
หากทำสำเร็จ แอพของคุณจะได้รับการตอบกลับแบบ JSON ที่มี ID สำหรับวิดีโอและ URL ของ Facebook ที่คุณจะอัพโหลดวิดีโอ
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v24.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)” ดึงไฟล์ที่โฮสต์ได้
ไฟล์ที่โฮสต์บน Meta CDN (เช่น URL fbcdn) จะถูกปฏิเสธ ผู้พัฒนาสามารถใช้ฟีเจอร์โพสต์ข้ามเพื่อเผยแพร่วิดีโอในหลายๆ เพจแทนได้โดยไม่ต้องอัพโหลดวิดีโอลงทีละเพจ โปรดดูคำแนะนำโดยละเอียดเกี่ยวกับการโพสต์ข้าม
curl -X POST "https://rupload.facebook.com/video-upload/v24.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/v24.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 เป็น 0POST อีกครั้งโดยตั้งค่า offset เป็นค่า bytes_transfered จากการตรวจสอบสถานะหากต้องการตรวจสอบสถานะวิดีโอของคุณในระหว่างการอัพโหลดการหรือเผยแพร่ ให้ส่งคำขอ GET ไปยังตำแหน่งข้อมูล /video_id พร้อมด้วยพารามิเตอร์ต่อไปนี้
fields ที่ตั้งค่าเป็น statuscurl -X GET "https://graph.facebook.com/v24.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 ที่ตั้งเป็น ID สำหรับวิดีโอที่อัพโหลดของคุณupload_phase ที่ตั้งค่าเป็น finishcurl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
เมื่อดำเนินการสำเร็จ แอพของคุณจะได้รับการตอบกลับแบบ JSON ที่มีคู่คีย์-ค่าต่อไปนี้
success ที่ตั้งเป็น truepost_id ที่ตั้งเป็น ID สำหรับโพสต์ที่เป็นสตอรี่ของคุณ{
"success": true,
"post_id": 1234
}
ไปที่ข้อมูลอ้างอิงเกี่ยวกับโพสต์บนเพจ
เพื่อเรียนรู้วิธีอัพโหลดรูปภาพไปยังเซิร์ฟเวอร์ของ Meta โดยใช้ตำแหน่งข้อมูล /page_id/photos อย่าลืมระบุพารามิเตอร์ published และตั้งค่าเป็น false
หากต้องการเผยแพร่สตอรี่แบบรูปภาพไปยังเพจของคุณ คุณจะส่งคำขอ POST ไปยังตำแหน่งข้อมูล /page_id/video_stories พร้อมด้วยพารามิเตอร์ต่อไปนี้
photo_id ที่ตั้งค่าเป็น ID สำหรับรูปภาพที่อัพโหลดของคุณcurl -X POST "https://graph.facebook.com/v24.0/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
เมื่อดำเนินการสำเร็จ แอพของคุณจะได้รับการตอบกลับแบบ JSON ที่มีคู่คีย์-ค่าต่อไปนี้
success ที่ตั้งเป็น truepost_id ที่ตั้งเป็น ID สำหรับโพสต์ที่เป็นสตอรี่ของคุณ{
"success": true,
"post_id": 1234
}
หากต้องการดูรายการสตอรี่ทั้งหมดสำหรับเพจและข้อมูลเกี่ยวกับแต่ละสตอรี่ ให้ส่งคำขอ GET ไปที่ตำแหน่งข้อมูล /page_id/stories โดยที่ page_id คือ ID สำหรับเพจที่คุณต้องการจะดู
curl -i -X GET "https://graph.facebook.com/v24.0/page_id/stories"
เมื่อดำเนินการสำเร็จ แอพของคุณจะได้รับการตอบกลับแบบ JSON ที่มีอาร์เรย์ของอ็อบเจ็กต์ โดยที่แต่ละอ็อบเจ็กต์มีข้อมูลเกี่ยวกับสตอรี่ที่เผยแพร่บนเพจ แต่ละอ็อบเจ็กต์จะประกอบด้วยคู่คีย์-ค่าต่อไปนี้
post_id ที่ตั้งเป็น ID สำหรับโพสต์ที่เป็นสตอรี่ที่เผยแพร่status ที่ตั้งเป็น PUBLISHED, ARCHIVEDcreation_time ที่ตั้งเป็นการประทับเวลา UNIX ในขณะที่มีการเผยแพร่สตอรี่media_type ที่ตั้งเป็น video หรือ photomedia_id ที่ตั้งเป็น ID สำหรับวิดีโอหรือรูปภาพในโพสต์ที่เป็นสตอรี่url ที่ตั้งเป็น URL ของ Facebook สำหรับโพสต์ที่เป็นสตอรี่ เช่น 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
เรียนรู้เพิ่มเติมเกี่ยวกับตำแหน่งข้อมูลและแนวคิดที่มีการกล่าวถึงในคู่มือนี้