如何解决通过Graph API发布视频到Facebook Page的error_subcode 1363019
Facebook Graph API视频发布失败:错误代码6000(子代码1363019)
按照官方视频发布流程完成视频上传并获取句柄后,执行最终发布步骤时始终返回以下错误:
{ "error": { "message": "There was a problem uploading your video file. Please try again with another file.", "type": "OAuthException", "code": 6000, "error_data": { "error": null }, "error_subcode": 1363019, "is_transient": false, "error_user_title": "Video wasn't uploaded", "error_user_msg": "There was a problem with uploading your video. Please wait a few minutes and try again.", "fbtrace_id": "AMa9zbs8h3b4omv5wRSfTsf" } }
已尝试的排查操作
- 通过Facebook Javascript SDK发送POST请求
- 使用axios发送POST请求
- 通过CORS代理使用axios发送POST请求
- 用Graph API Explorer发送POST请求
- 从vercel.app主机而非localhost发起请求
- 切换使用graph.facebook.com和graph-video.facebook.com域名
- 上传多种不同类型、大小的视频文件
所有尝试均返回相同错误(仅fbtrace_id不同),等待重试无效。
当前视频发布请求示例
curl 'https://graph.facebook.com/v20.0/<PAGE_ID>/videos?access_token=<PAGE_ACCESS_TOKEN>' \ -H 'accept: */*' \ -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \ -H 'content-type: application/x-www-form-urlencoded' \ -H 'origin: https://localhost:3000' \ -H 'priority: u=1, i' \ -H 'referer: https://localhost:3000/' \ -H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \ --data-raw $'description=Victoria\'s%20nurses%20and%20midwives%20have%20voted%20down%20a%20proposed%2023%25%20pay%20rise%20over%20four%20years%2C%20citing%20uncertainty%20and%20a%20desire%20for%20better%20conditions.&fbuploader_video_file_chunk=<VERY_LONG_VIDEO_HANDLE>&method=post&pretty=0&sdk=joey&suppress_http_code=1&title=Nurses%20Reject%20Offer'
对比:成功发布普通Page帖子的请求
curl 'https://graph.facebook.com/v20.0/<PAGE_ID>/feed?access_token=<PAGE_ACCESS_TOKEN>' \ -H 'accept: */*' \ -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \ -H 'content-type: application/x-www-form-urlencoded' \ -H 'origin: https://localhost:3000' \ -H 'priority: u=1, i' \ -H 'referer: https://localhost:3000/' \ -H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \ --data-raw 'message=Nurses%20Reject%20Offer&method=post&pretty=0&sdk=joey&suppress_http_code=1'
上下文信息
- Facebook应用未通过审核,但用户已关联应用(测试环境下理论不影响)
- 用户拥有测试Page的管理员权限
- 已完成商业验证
- 开发者后台显示无需申请额外访问权限
- 应用类型为“business”,模式为“development”
- 用户/页面访问令牌包含权限:email、publish_video、pages_show_list、pages_read_engagement、pages_read_user_content、pages_manage_posts、pages_manage_engagement
- 应用登录配置:登录变体为general,请求的用户令牌权限包括pages_show_list、publish_video、pages_manage_posts、email、pages_read_management、pages_manage_engagement
- 额外线索:获取视频句柄后,无法在Facebook页面/Creator Studio找到该视频,调用API查询用户视频返回空数组
解决方案建议
1. 验证视频句柄有效性
获取视频句柄后,调用GET /<VIDEO_HANDLE>接口确认视频资源是否上传完成且状态正常。若返回404或异常状态,说明分片上传未正确完成,需重新执行上传流程,确保每个分片的MD5校验与请求参数一致,且最终完成请求返回成功。
2. 核查页面令牌权限细节
通过GET /debug_token?input_token=<PAGE_ACCESS_TOKEN>接口查看令牌权限明细,确认publish_video权限是页面令牌直接拥有,而非继承自用户令牌,且权限状态为granted。
3. 调整发布请求参数格式
当前请求用application/x-www-form-urlencoded传递视频句柄,尝试改用multipart/form-data格式,或替换参数名为video_id传入句柄。官方推荐发布时使用video_id指向已上传的视频资源,部分场景下参数命名会影响API识别。
4. 确认测试资源关联
开发模式下,只有添加到应用测试资源列表的页面才能正常使用API。检查测试页面是否已加入应用的测试资源,确保页面与应用关联关系正确,避免隐性权限限制。
5. 严格遵循视频编码规范
确保视频符合Facebook要求:
- 容器格式:MP4(推荐)
- 视频编码:H.264(基线/主/高配置),分辨率≤4096x2304
- 音频编码:AAC,采样率44.1kHz/48kHz
- 测试阶段优先使用小于100MB的视频,减少分片上传的隐性错误
6. 切换至服务器端发起请求
前端浏览器环境可能受CORS、安全策略限制,尝试在服务器端(Node.js/PHP等)直接调用API发布视频,使用页面令牌发起请求,规避前端环境的额外限制。
内容的提问来源于stack exchange,提问作者user680141
相关产品推荐
相关产品推荐

