上传文件

使用可续传 API 可将大型文件上传至 Meta 的社交关系图谱并恢复中断的上传会话,而无需从头开始上传。文件在上传之后便可发布。

对于支持已上传文件句柄的端点,其参考文档将说明这些端点是否支持可续传 API 返回的句柄。

前期准备

本指南假设您已阅读图谱 API 概览以及 Meta 开发相关的各篇指南,并执行了使用 Meta 进行开发所需要的必要操作。

您需要提供:

  • 一个 Meta 应用编号
  • 一个采用以下格式之一的文件:
    • pdf
    • jpeg
    • jpg
    • png
  • 用户访问口令

第 1 步:发起上传会话

如要发起上传会话,请向 /<APP_ID>/uploads 端点发送 POST 请求(其中 <APP_ID> 是您的 Meta 应用编号),在请求中加入以下必要参数:

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

请求成功后,您的应用将收到 JSON 响应,其中包含上传会话编号。

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

第 2 步:开始上传

如要开始上传文件,请向 /upload:<UPLOAD_SESSION_ID> 端点发送 POST 请求,在请求中加入以下 file_offset,并将其设为 0

请求语法

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

恢复中断的上传

如果您已发起上传会话,但会话时间长于预期或会话已中断,请向 /upload:<UPLOAD_SESSION_ID> 端点(从 第 1 步中获取而来)发送 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>"
}

使用该 file_offset 值按第 2 步中的操作再发送一个 POST 请求。这将从中断处恢复上传流程。

后续步骤