本文件介紹如何使用 Facebook 限時動態 API 在 Facebook 專頁上發佈限時動態。
如要發佈限時動態,您的應用程式需要執行以下步驟:
本指南假設您已閱讀專頁 API 概覽、安裝了所需組件,並成功完成新手指南。
您的應用程式用戶需要能夠在專頁存取憑證所代表的專頁上執行 CREATE_CONTENT 任務,並向您的應用程式授予以下權限:
pages_manage_postspages_read_engagementpages_show_list如要在 API 要求中使用企業系統用戶,則還需要 business_management 權限。
您提供的相片或影片必須符合以下規格。
| 屬性 | 規格 |
|---|---|
檔案類型 | .jpeg、.bmp、.png、.gif、.tiff |
檔案大小 | 檔案大小不能超過 4MB。對於 .png 檔案,我們建議大小不要超過 1MB,否則圖片可能會出現馬賽克。 |
| 屬性 | 規格 | ||
|---|---|---|---|
檔案類型 | .mp4(推薦) | ||
長闊比例 | 9 x 16 | ||
解決方法 | 1080 x 1920 像素(推薦)。最低 540 x 960 像素 | ||
幀率 | 每秒 24 – 60 幀 | ||
時長 | 3 – 90 秒。 作為限時動態發佈至 Facebook 專頁的 Reels 不能超過 60 秒。 | ||
影片設定 |
| ||
音訊設定 |
|
GET 要求中加入限時動態典藏以查看限時動態清單,您必須開啟 Facebook 限時動態典藏功能 
測試 API 呼叫時,您可以在呼叫中加入 access_token 參數,並將其設為您的存取憑證。但是,從您的應用程式發出安全呼叫時,應使用存取憑證類別。
為方便閱讀,我們已為本文件中的程式碼範例設定格式。請將以粗體及斜體標示的值(例如 page_id)替換為您的值。
如要在 Facebook 專頁上發佈影片限時動態,您需要向 Meta 伺服器發起影片上載連線階段,將影片上載至 Meta 伺服器,然後發佈影片限時動態。
如要發起上載連線階段,請向 /page_id/video_stories 端點傳送 POST 要求(其中 page_id 是您的 Facebook 專頁編號),並將 upload_phase 參數設為 start。
curl -X POST "https://graph.facebook.com/v25.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
若要求成功,應用程式收到的 JSON 回應中會包含影片編號和您上載影片所使用的 Facebook 網址。
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v25.0/video_id",
} 發起上載連線階段並收到上載網址後,您就可以上載影片了。您可以上載以下任何一種文件:
如要上載託管的檔案,請向您在發起連線階段步驟中收到的 upload_url 端點傳送 POST 要求,並加入以下參數:
file_url,設為影片檔案的網址確保主機是 rupload.facebook.com。
API 現會拒絕託管在透過 robots.txt 限制存取權的網站上的檔案。開發人員需確保託管網站允許「facebookexternalhit/1.1(+http://www.facebook.com/externalhit_uatext.php)」用戶代理程式擷取託管檔案。
Meta CDN(例如 fbcdn 網址)上的託管檔案將遭拒。開發人員可改為使用多重發佈功能來在多個專頁上發佈影片,而無需分別將影片上載至各專頁。請參閱有關多重發佈功能的詳細指南。
curl -X POST "https://rupload.facebook.com/video-upload/v25.0/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
如要上載本機檔案,請向您在發起連線階段步驟中收到的 upload_url 端點傳送 POST 要求,並加入以下參數:
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 回應中會包含設為 true 的 success。
{
"success": true
} 如果影片上載中斷,可重新開始上載或恢復上載。
POST 要求,並將 offset 設為 0。 POST 要求,並將 offset 設為狀態檢查結果中的 bytes_transfered 值。如要檢查影片的狀態,在上載或發佈時,請向 /video_id 端點傳送 GET 要求,並加入以下參數:
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"
}
}
}
|
如要在專頁上發佈影片限時動態,請向 /page_id/video_stories 端點傳送 POST 要求,並加入以下參數:
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
}
查閱專頁帖子參考資料
,了解如何使用 /page_id/photos 端點將相片上載至 Meta 伺服器。務必加入 published 參數,並將其設為 false。
如要在專頁發佈相片限時動態,請向 /page_id/photo_stories 端點傳送 POST 要求,並加入以下參數:
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
}
如要取得專頁的完整限時動態清單和每則限時動態的資料,請向 /page_id/stories 端點傳送 GET 要求,其中 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,設為限時動態帖子的 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 參數)來篩選限時動態。
進一步了解本指南中討論的不同端點和概念。