入门指南

本教程将为您介绍如何使用视频 API 在公共主页上创建视频。本教程假设您懂得如何使用命令行工具(如 Terminal)或应用(如 Postman)执行基本的 cURL 请求,并且对图谱 API 探索工具有基本的了解。

准备工作

您将需要:

  • 现有的 Facebook 应用。如果您没有现有应用,请前往 Facebook 开发者,点击我的应用,然后创建一个应用。
  • 一段大小为 10 至 20 MB 的视频,而且您已将其分割成多个 5 MB 的区块,并将所有区块放置于同一目录中。
  • 您可以在上面执行 CREATE_CONTENT任务的公共主页。
  • 对可以执行 cURL 请求的命令行工具(如 Terminal)或应用(如 Postman)的访问权限。

第 1 步:获取用户访问口令

一般来说,您必须在您的应用中实现 Facebook 登录,并通过该工具从应用用户处获取访问口令。不过,在本教程中,您可以使用图谱 API 探索工具,因为该工具已实现 Facebook 登录,便于您为您的任何应用生成口令。

  1. 加载图谱 API 探索工具,并从 Facebook 应用下拉菜单中选择您的应用。

  2. 用户或公共主页下拉菜单中,选择获取用户访问口令,然后以您自己的身份继续,并进行身份验证。如果您重新使用旧版应用,则可能已经完成身份验证。

  3. 权限版块,使用添加权限搜索栏搜索并选择以下权限:pages_manage_engagementpages_read_user_content
  4. 点击生成访问口令
  5. 在系统显示的模式窗口中以您自己的身份继续,然后选择您最终要在哪个公共主页上传视频。
  6. 在后续页面中均选择下一步,直至关闭模式窗口。此操作将为您的应用授予您已选择的权限,并生成用户访问口令
  7. 可选步骤:点击蓝色信息图标,确认您是否已授予应用正确的权限(范围)。

第 2 步:获取您的公共主页编号和相应口令

  1. 使用图谱 API 探索工具GET /me/accounts 连线发送请求。此操作将查询用户,并返回您在上一步中为应用授予访问权限的任何公共主页。
  2. 在响应中找到您的公共主页,并复制公共主页编号 (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,请在请求正文中以形式-数据 的形式加入查询参数的键和值。

  2. 请求示例
    curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=start" \
      -F "file_size=77188035"
    
  3. 使用您的公共主页编号替换请求路径中的公共主页编号 (1755847768034402),将 access_token 设为您刚才复制的公共主页访问口令,并将 file_size 设为视频文件的总大小(以字节为单位)。

  4. API 将返回以下视频会话:
    {
      "video_id": "225467151853466",
      "start_offset": "0",
      "end_offset": "1048576",
      "upload_session_id": "225467155186799"
    }
    
  5. 复制所有返回的值(end_offset 除外)。

第 4 步:上传第一个视频区块

POST /{page-id}/videos 连线发送另一个请求,在请求中加入 upload_session_id 和第一个视频区块的名称。

请求示例

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 设为 File(将鼠标悬停在该行以触发下拉菜单),并手动选择第一个区块文件。

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
}

系统将组合您的视频,并对其进行编码。完整的编码过程最多可能持续几分钟,具体取决于视频文件的总大小。