本文档介绍如何使用 Facebook 快拍 API 在 Facebook 公共主页上发布快拍。
发布快拍需要执行以下步骤:
本指南假设您已阅读公共主页 API 概览,实现了所需组件,并成功实施了入门指南。
您需要实现 Facebook 登录或企业版 Facebook 登录,以便向您的应用用户请求授予所需权限,来访问他们的 Facebook 公共主页和接收公共主页访问口令。
您的应用用户必须能够在公共主页访问口令所代表的公共主页上执行 CREATE_CONTENT
任务,并向您的应用授予以下权限:
pages_manage_posts
pages_read_engagement
pages_show_list
如要在 API 请求中使用企业系统用户,则还需要 business_management
权限。
您提供的照片或视频必须符合以下规格。
属性 | 规格 |
---|---|
文件类型 | .jpeg、.bmp、.png、.gif、.tiff |
文件大小 | 文件大小不能超过 4MB。对于 .png 文件,我们建议大小不要超过 1MB,否则图片可能会出现马赛克。 |
属性 | 规格 | ||
---|---|---|---|
文件类型 | .mp4(推荐) | ||
宽高比 | 9 x 16 | ||
分辨率 | 1080 x 1920 像素(推荐)。最低 540 x 960 像素 | ||
帧率 | 每秒 24 – 60 帧 | ||
时长 | 3 – 90 秒。 作为快拍发布至 Facebook 公共主页的 Reels 不能超过 60 秒。 | ||
视频设置 |
| ||
音频设置 |
|
GET
请求中加入收入私密文件夹的快拍,以便查看完整的快拍列表,您必须启用 Facebook 快拍私密文件夹
测试 API 调用时,您可以在调用中加入 access_token
参数,并将其设为您的访问口令。但是,从您的应用发出安全调用时,应使用访问口令类。
为方便阅读,本文档中代码示例的格式已经过调整。请将粗体、斜体值(例如 page_id)替换为您的值。
如要在 Facebook 公共主页上发布视频快拍,您需要向 Meta 服务器发起视频上传会话,将视频上传至 Meta 服务器,然后发布视频快拍。
如要发起上传会话,请向 /page_id/video_stories
端点发送 POST
请求(其中 page_id
是您的 Facebook 公共主页编号),在请求中加入 upload_phase
参数,并将其设为 start
。
curl -X POST "https://graph.facebook.com/v21.0
/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
若请求成功,应用收到的 JSON 响应中将包含视频编号和您上传视频所使用的 Facebook 网址。
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v21.0
/video_id",
}
发起上传会话并收到上传网址后,您就可以上传视频了。您可以上传以下任意一种文件:
如要上传托管的文件,请向您在发起会话步骤中收到的 upload_url
端点发送 POST
请求,并在请求中加入以下参数:
file_url
,设置为视频文件所在的网址
curl -X POST "https://rupload.facebook.com/video-upload/v21.0
/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
如要上传本地文件,请向您在发起会话步骤中收到的 upload_url
端点发送 POST
请求,并在请求中加入以下参数:
offset
,设置为 0
file_size
,设置为要上传视频的总大小,以字节为单位
curl -X POST "https://rupload.facebook.com/video-upload/v21.0
/video_id" \
-H "offset: 0" \
-H "file_size: file_size_in_bytes" \
--data-binary "@/path/to/file/my_video_file.mp4"
若上传成功,应用收到的 JSON 响应中将包含 success
,值已设为 true
。
{ "success": true }
如果视频上传中断,可重新开始上传或恢复上传。
POST
请求,并在请求中将 offset
设为 0
。 POST
请求,并在请求中将 offset
设为状态检查结果中的 bytes_transfered
值。如要检查视频的状态,在上传或发布时,请向 /video_id
端点发送 GET
请求,并在请求中加入以下参数:
fields
,设置为 status
curl -X GET "https://graph.facebook.com/v21.0
/video_id" \
-d "fields=status"
若请求成功,应用收到的 JSON 响应中将包含:
status
对象,其中包含:
video_status
,值为 ready
、processing
、expired
或 error
uploading_phase
对象,其中包含以下键值对:
status
,设置为 in_progress
、not_started
、complete
或 error
bytes_transfered
,设置为已上传的字节数;如果上传中断,该值可用作 offset
的值。processing_phase
对象,其中包含以下键值对:
status
,设置为 in_progress
、not_started
、complete
或 error
processing_phase
对象,其中包含以下键值对:
status
,设置为 in_progress
、not_started
、complete
或 error
publish_status
,设置为 published
或 not_published
publish_time
,设置为实际时间或发布时间的 UNIX 时间戳
以下响应表示某个文件已成功上传。
{ "status": { "video_status": "processing", "uploading_phase": { "status": "in_progress", "bytes_transfered": 50002 }, "processing_phase": { "status": "not_started" } "publishing_phase": { "status": "not_started", "publish_status": "published", "publish_time": 234523452 } } } |
以下响应表示处理阶段出现一个错误。
{ "status": { "video_status": "processing", "uploading_phase": { "status": "complete" }, "processing_phase": { "status": "not_started", "error": { "message": "Resolution too low. Video must have a minimum resolution of 540p." } } "publishing_phase": { "status": "not_started" } } } |
如要在公共主页上发布视频快拍,请向 /page_id
/video_stories
端点发送 POST
请求,并在请求中加入以下参数:
video_id
,设置为已上传视频的编号upload_phase
,设置为 finish
curl -X POST "https://graph.facebook.com/v21.0
/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
若请求成功,应用收到的 JSON 响应中将包含以下键值对:
success
,设置为 true
post_id
,设置为快拍帖子的编号{ "success": true, "post_id": 1234 }
访问公共主页帖子指南 ,了解如何使用 /page_id/photos
端点将照片上传至 Meta 服务器。务必在请求中加入 published
参数,并将其设为 false
。
如要向公共主页发布照片快拍,请向 /page_id
/photo_stories
端点发送 POST
请求,并在请求中加入以下参数:
photo_id
,设置为已上传照片的编号
curl -X POST "https://graph.facebook.com/v21.0
/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
若请求成功,应用收到的 JSON 响应中将包含以下键值对:
success
,设置为 true
post_id
,设置为快拍帖子的编号{ "success": true, "post_id": 1234 }
如要获取公共主页的完整快拍清单以及有关每个快拍的数据,请向 /
page_id
/stories
端点发送 GET
请求,其中 page_id
是您要查看的公共主页的编号。
curl -i -X GET "https://graph.facebook.com/v21.0
/page_id/stories"
若请求成功,应用收到的 JSON 响应中将包含一个对象数组,其中每个对象都包含已发布到公共主页的快拍的信息。每个对象都包含以下键值对:
post_id
,设置为已发布快拍帖子的编号status
,设置为 PUBLISHED
、ARCHIVED
creation_time
,设置为快拍发布时的 UNIX 时间戳media_type
,设置为 video
或 photo
media_id
,设置为快拍帖子中视频或照片的编号url
,设置为快拍帖子所在的 Facebook 网址,如 https://facebook.com/stories/8283482737484972
{ "data": [ { "post_id": "post_id", "status": "PUBLISHED", "creation_time": "123456", "media_type": "video", "media_id": "video_id", "url": "https://facebook.com/stories…" }, { "post_id": "post_id", "status": "PUBLISHED", "creation_time": "123456", "media_type": "photo", "media_id": "photo_id", "url": "https://facebook.com/stories…" }, { "post_id": "post_id", "status": "ARCHIVED", "creation_time": "123456", "media_type": "photo", "media_id": "photo_id", "url": "https://facebook.com/stories…" }, ... ], }
您可以根据状态(已发布或已归档)以及日期(使用 since
和 until
参数)来筛选快拍。
详细了解本指南中讨论的不同端点和概念。