スタートガイド

このチュートリアルでは、動画APIを使ってページ上に動画を作成する方法を示します。このチュートリアルは、TerminalなどのコマンドラインツールやPostmanなどのアプリを使って基本的なcURLリクエストを実行する方法を理解し、グラフAPIエクスプローラについて基本的な知識を持っていることを前提としています。

開始する前に

以下が必要です。

  • 既存のFacebookアプリ。アプリがない場合は、Facebook for Developersにアクセスし、[マイアプリ]をクリックしてアプリを作成します。
  • 5 MBのチャンクに分割した10~20 MBの動画(すべてのチャンクを1つのディレクトリに配置)。
  • CREATE_CONTENTタスクを実行できるページ。
  • cURLリクエストを実行できるコマンドラインツール(Terminalなど)またはアプリ(Postmanなど)へのアクセス。

ステップ1: ユーザーアクセストークンを取得する

一般的な手順としては、アプリにFacebookログインを実装し、それを使ってアプリユーザーからアクセストークンを取得する必要があります。ただし、このチュートリアルでは、グラフAPIエクスプローラを使うことができます。このツールにはFacebookログインがすでに実装されており、アプリのトークンを簡単に生成できるためです。

  1. グラフAPIエクスプローラを読み込んで、[Facebookアプリ]ドロップダウンメニューからアプリを選択します。

  2. [ユーザーまたはページ]ドロップダウンメニューで、[ユーザーアクセストークンを取得]を選択し、自分のIDで続行して認証します。古いアプリを再利用している場合は、すでに認証されている可能性があります。

  3. [アクセス許可]セクションでの[アクセス許可を追加]検索フィールドで、pages_manage_engagementpages_read_user_contentのアクセス許可を検索して選択します。
  4. [アクセストークンを生成]をクリックします。
  5. 表示されるモーダルウィンドウで、自分のIDで処理を続行し、最終的に動画をアップロードするページを選択します。
  6. 残りの画面で[次へ]をクリックし、モーダルを終了します。選択したアクセス許可がアプリに付与され、ユーザーアクセストークンも生成されます。
  7. 任意。青い情報アイコンをクリックして、アプリに正しいアクセス許可(スコープ)が付与されていることを確認します。

ステップ2: ページIDとそのトークンを取得する

  1. グラフAPIエクスプローラを使って、GET /me/accountsエッジにリクエストを送信します。これにより、ユーザーがクエリされ、前のステップでアプリにアクセスを許可したページが返されます。
  2. 応答の中から該当のページを見つけ、そのID (id)とページアクセストークン(access_token)をコピーします。
  3. {
      "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"
        }
      }
    }
    

ステップ3: 動画セッションを作成する

  1. コマンドラインツールで、動画のチャンクがあるフォルダーに移動し、graph-video.facebook.comホストのPOST /page-id/videosエッジにcURLリクエストを送信します。Postmanを使用する場合は、クエリパラメーターのキーと値をform-dataとしてリクエストの本文に含めます。

  2. リクエストの例
    curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=start" \
      -F "file_size=77188035"
    
  3. リクエストパスのページID (1755847768034402)をページのIDに置き換え、access_tokenを先ほどコピーしたページアクセストークンに設定し、file_sizeを動画ファイルの合計サイズ(バイト単位)に設定します。

  4. APIは動画セッションを返します。
    {
      "video_id": "225467151853466",
      "start_offset": "0",
      "end_offset": "1048576",
      "upload_session_id": "225467155186799"
    }
    
  5. end_offsetを除くすべての戻り値をコピーします。

ステップ4: 最初の動画チャンクをアップロードする

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"
}

ステップ5: 残りの動画チャンクをアップロードする

  1. 同じリクエストを送信します。その際、start_offsetを前の応答で返された新しいstart_offset値に設定し、video_file_chunkを次にアップロードする動画チャンクの名前に設定します。
  2. 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"
    }
    
  3. この手順を繰り返して、残りのすべての動画チャンクを正しい順序でアップロードします。動画ファイルをチャンクに分割するために使用したプログラムでは、チャンクに対して順序に従った名前を付けている必要があります。

ステップ6: アップロードセッションを終了する

最後のチャンクをアップロードしたら、同じエンドポイントに最終リクエストを送信して、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
}

動画がアセンブルされ、エンコードされます。動画ファイルの合計サイズによっては、エンコードプロセスが完了するまで数分かかる場合があります。