ファイルをアップロードする

再開可能アップロードAPIでは、大きなファイルをMetaのソーシャルグラフにアップロードし、中断されたアップロードセッションを最初からやり直さなくても再開することができます。一旦ファイルをアップロードしたら、公開することが可能です。

アップロードされたファイルハンドルをサポートするエンドポイントを参照すると、そのエンドポイントが再開可能アップロードAPIによって返されたハンドルをサポートしているかどうかが示されます。

開始する前に

このガイドは、開発者がすでにグラフAPI概要ガイドとMeta開発ガイドを読み、Metaによる開発で必要となるアクションを実行していることを前提としています。

以下の情報が必要です。

  • MetaアプリID
  • 次のいずれかのフォーマットのファイル:
    • pdf
    • jpeg
    • jpg
    • png
  • ユーザーアクセストークン

ステップ1: アップロードセッションを開始する

アップロードセッションを開始するには、以下の必須パラメーターを指定して、POSTリクエストを/<APP_ID>/uploadsエンドポイントに送信します。<APP_ID>は、アプリのMeta IDです。

  • file_name - ファイル名
  • file_length - ファイルサイズ(バイト単位)
  • file_type - ファイルのMIMEタイプ。有効な値: application/pdfimage/jpegimage/jpgimage/pngvideo/mp4

リクエストの構文

読みやすいようにフォーマットしたコードを次に示します。

curl -i -X POST "https://graph.facebook.com/v21.0/<APP_ID>/uploads
  ?file_name=<FILE_NAME>
  &file_length=<FILE_LENGTH>
  &file_type=<FILE_TYPE>
  &access_token=<USER_ACCESS_TOKEN>"

成功すると、アプリはアップロードセッションIDを含むJSON応答を受け取ります。

{
  "id": "upload:<UPLOAD_SESSION_ID>"
}

ステップ2: アップロードを開始する

以下のfile_offset0に設定して、POSTリクエストを/upload:<UPLOAD_SESSION_ID>エンドポイントに送信し、ファイルのアップロードを開始します。

リクエストの構文

curl -i -X POST "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>"
  --header "file_offset: 0"
  --data-binary @<FILE_NAME>

ヘッダーにアクセストークンを含める必要があります。含めない場合、呼び出しは失敗します。

成功すると、アプリはエンドポイントにファイルを公開するためにAPI呼び出しで使用するファイルハンドルを受け取ります。

{
  "h": "<UPLOADED_FILE_HANDLE>"
}

応答の例

{
    "h": "2:c2FtcGxl..."
}

中断されたアップロードを再開する

開始したアップロードセッションが予想以上に長引いている場合や途中で中断された場合は、ステップ1/upload:<UPLOAD_SESSION_ID>エンドポイントにGETリクエストを送信します。

リクエストの構文

読みやすいようにフォーマットしたコードを次に示します。

curl -i -X GET "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>""

成功すると、アプリはJSON応答を受け取ります。この応答には、中断時点からアップロードプロセスを再開するために使用できるfile_offset値が含まれます。

{
  "id": "upload:<UPLOAD_SESSION_ID>"
  "file_offset": <FILE_OFFSET>"
}

ステップ2で行ったように、このfile_offset値を使ってもう一度POSTリクエストを送信します。これにより、中断時点からアップロードプロセスを再開できます。

次のステップ