本文件說明如何使用直播視像 API 將影片同時發佈到多個專頁。
多重發佈不適用於個人專用檔案,只適用於專頁和專業模式個人檔案。除了直播視像,多重發佈同時亦適用於隨選影片。
如要將直播視像和隨選影片多重發佈到多個專頁和專業模式個人檔案,您需要準備以下事項:
CREATE_CONTENT
任務。pages_manage_posts
pages_read_user_content
pages_manage_engagement
pages_show_list
publish_video
為了在另一個專頁或專業模式個人檔案多重發佈內容,您的專頁必須向專頁或專業模式個人檔案傳送多重發佈要求,並且必須由獲邀請的專頁或個人檔案接受您的要求。
若要傳送多重發佈請求,請使用下列參數向 /<YOUR_PAGE_ID>
端點傳送 POST
要求:
begin_crossposting_handshake
設定為包含逗號分隔專頁清單的陣列,其中 partner_page_id
設定為要求傳送對象的專頁編號,allow_live
設定為 true
。
測試 API 呼叫時,您可以在呼叫中加入 access_token
參數,並將其設為您的存取憑證。但是,從您的應用程式發出安全呼叫時,應使用存取憑證類別。
curl -i -X POST "https://graph.facebook.com/v21.0
<PAGE_1_ID> \
?begin_crossposting_handshake=[{partner_page_id:<PAGE_2_ID>,allow_live:true}]"
成功的話,應用程式就會收到以下 JSON 回應,其中包含設為 true
的 success
。
{ "success": true }
將 allow_live
設定為 false
,以傳送建立多重發佈關係的要求,其中專頁只可在您的管理員或編輯者核准視像後,才多重發佈直播視像。
若要接受其他專頁的要求,允許其將影片多重發佈到您的專頁,請向 /<ID>
端點傳送 POST
要求,並將 accept_crossposting_handshake
參數設定為傳送要求的專頁編號,將 allow_live
設為 true
。
curl -X POST "https://graph.facebook.com/v21.0
/<PAGE_2_ID>
?accept_crossposting_handshake=[{partner_page_id:<PAGE_1_ID>, allow_live:true}]"
成功的話,應用程式就會收到以下 JSON 回應,其中包含設為 true
的 success
。該影片現在將在多個專頁上發佈。
如要拒絕要求,請將 allow_live
設定為 false
。
若要尋找您的應用程式用戶在哪些專頁有多重發佈權限,請向 /<PAGE_ID>/crosspost_whitelisted_pages
端點傳送包含下列欄位的 GET
要求:
allows_live_crossposts
id
name
(選用項目)
curl "https://graph.facebook.com/v21.0
/<PAGE_ID>/crosspost_whitelisted_pages" \
-d "fields=id,name,allows_live_crossposts"
成功後,您的應用程式將收到一個清單,當中列有編號、名稱以及標明是否允許專頁多重發佈的 true
或 false
值,其中 true
表示來源專頁可以直接在目標專頁發佈多重發佈的直播影片,無需進一步授權,false
則表示目標專頁必須手動發佈多重發佈的影片。
{ "data": [ { "id": "107738621396466", "name": "Crossposting Page C", "allows_live_crossposts": false }, { "id": "106589754846067", "name": "Crossposting Page B", "allows_live_crossposts": true }, { "id": "106343288214714", "name": "Crossposting Target X", "allows_live_crossposts": true, } ], "paging": { "cursors": { "before": "<PAGE_CURSOR>", "after": "<PAGE_CURSOR>" } } }
用戶必須能夠代表專頁執行操作,以及編輯和更新影片。換言之,您的應用程式將需要代表用戶擁有 pages_manage_posts
權限。
我們知道可為哪些專頁使用多重發佈後,就能夠將 crossposting_actions
加入任何 LiveVideo 物件中。每個多重發佈動作都會定義是否可為直播視像使用多重發佈,以及是否應向目標專頁自動發佈直播視像。
POST /{video-id}
是更新影片的要求。
curl -i -X POST \
"https://graph.facebook.com/v10.0/112103234301221?fields=crosspost_shared_pages,crossposted_broadcasts%7Bstatus,from%7Bname%7D%7D&access_token=${access_token}" \
-H "Content-Type: application/json" \
-d @- << HEREDOC
{"crossposting_actions": [
{
"page_id": "107738621396466",
"action": "enable_crossposting"
},
{
"page_id": "106589754846067",
"action": "enable_crossposting_and_create_post"
},
{
"page_id": "106343288214714",
"action": "disable_crossposting"
}
]}
HEREDOC
這些動作會顯示可用選項。第一個選項允許首個專頁(107738621396466
)透過創作者工作坊或 API 多重發佈影片,但不會自動將影片多重發佈到任何地方。第二個選項會阻止第二個專頁(106589754846067
)多重發佈影片,而第三個選項會將影片自動發佈到目標專頁(106343288214714
)。
傳回 LiveVideo 物件,而且我們已透過 crosspost_shared_pages
關係連線來查看可為哪些專頁應用多重發佈,以及透過 crossposted_broadcasts
關係連線來查看我們已經在哪些專頁上發佈帖子。
如果任何多重發佈關係已變更或無效,則多重發佈顯然會失敗,但系統不會顯示錯誤。換言之,檢查成功直播的回應是知道操作是否成功的唯一方法。
{ "crosspost_shared_pages": { "data": [ { "name": "Crossposting Page C", "id": "107738621396466" }, { "name": "[FB Test Page] Crossposting Page B", "id": "106589754846067" } ] }, "crossposted_broadcasts": { "data": [ { "status": "UNPUBLISHED", "from": { "name": "[FB Test Page] Crossposting Page B", "id": "106589754846067" }, "id": "114820814022961" } ] }, "id": "112103234301221" }
如果任何 crossposting_options
失效,則整個要求都會失敗。所有多重發佈都不會成功。
{ "error": { "message": "Fatal", "type": "OAuthException", "code": -1, "error_subcode": 1363103, "is_transient": false, "error_user_title": "Invalid Parameters", "error_user_msg": "The request does not specify valid parameters, no action has been taken.", "fbtrace_id": "AnI03n5n0Px-ihrZjkWMeTP" } }