このチュートリアルでは、動画APIを使ってページ上に動画を作成する方法を示します。このチュートリアルは、TerminalなどのコマンドラインツールやPostmanなどのアプリを使って基本的なcURLリクエストを実行する方法を理解し、グラフAPIエクスプローラについて基本的な知識を持っていることを前提としています。
以下が必要です。
CREATE_CONTENT
タスクを実行できるページ。一般的な手順としては、アプリにFacebookログインを実装し、それを使ってアプリユーザーからアクセストークンを取得する必要があります。ただし、このチュートリアルでは、グラフAPIエクスプローラを使うことができます。このツールにはFacebookログインがすでに実装されており、アプリのトークンを簡単に生成できるためです。
pages_manage_engagement
とpages_read_user_content
のアクセス許可を検索して選択します。
GET /me/accounts
エッジにリクエストを送信します。これにより、ユーザーがクエリされ、前のステップでアプリにアクセスを許可したページが返されます。 id
)とページアクセストークン(access_token
)をコピーします。{ "data": [ { "access_token": "EBACf...", //Copy your Page Access Token "category": "Media", "category_list": [ { "id": "163003840417682", "name": "Media" } ], "name": "Metricsaurus", "id": "1755847768034402", //Copy your Page ID "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging": { "cursors": { "before": "MTc1NTg0Nzc2ODAzNDQwMgZDZD", "after": "MTc1NTg0Nzc2ODAzNDQwMgZDZD" } } }
graph-video.facebook.com
ホストのPOST /page-id/videos
エッジにcURLリクエストを送信します。Postmanを使用する場合は、クエリパラメーターのキーと値をform-dataとしてリクエストの本文に含めます。curl -X POST \ "https://graph-video.facebook.com/1755847768034402/videos" \ -F "access_token=EBACf..." \ -F "upload_phase=start" \ -F "file_size=77188035"
1755847768034402
)をページのIDに置き換え、access_token
を先ほどコピーしたページアクセストークンに設定し、file_size
を動画ファイルの合計サイズ(バイト単位)に設定します。{ "video_id": "225467151853466", "start_offset": "0", "end_offset": "1048576", "upload_session_id": "225467155186799" }
end_offset
を除くすべての戻り値をコピーします。upload_session_id
と最初の動画チャンクの名前を指定した別のリクエストをPOST /{page-id}/videos
エッジに送信します。
curl -X POST \ "https://graph-video.facebook.com/1755847768034402/videos" \ -F "access_token=EBACf..." \ -F "upload_phase=transfer" \ -F "start_offset=0" \ -F "upload_session_id=225467155186799" \ -F "video_file_chunk=@xaa"
cURLを使う場合は、ファイル名の前に@
記号を挿入します。
Postmanを使う場合は、@
記号を省略し、video_file_chunk
を[ファイル]に設定して(行にマウスを重ねるとドロップダウンメニューが開きます)、最初のチャンクファイルを手動で選択します。
APIは新しいstart_offset
を含む応答を返します。新しい値をキャプチャします。
{ "start_offset": "10485760", "end_offset": "15728640" }
start_offset
を前の応答で返された新しいstart_offset
値に設定し、video_file_chunk
を次にアップロードする動画チャンクの名前に設定します。curl -X POST \ "https://graph-video.facebook.com/1755847768034402/videos" \ -F "access_token=EBACf..." \ -F "upload_phase=transfer" \ -F "start_offset=10485760" \ -F "upload_session_id=225467155186799" \ -F "video_file_chunk=@xab"APIは、同じように新しい
start_offset
値を含む応答を返します。この値を使って、残りのチャンクを順番にアップロードできます。
{ "start_offset":"15728640", "end_offset":"20971520" }
最後のチャンクをアップロードしたら、同じエンドポイントに最終リクエストを送信して、upload_phase
を「finish」に設定することにより、アップロードセッションを終了します。
curl -X POST \ "https://graph-video.facebook.com/1755847768034402/videos" \ -F "access_token=EBACf..." \ -F "upload_phase=finish" \ -F "upload_session_id=225467155186799"
成功すると、APIはアップロードセッションを終了してtrue
を返します。
{ "success": true }
動画がアセンブルされ、エンコードされます。動画ファイルの合計サイズによっては、エンコードプロセスが完了するまで数分かかる場合があります。