使用Python调用Facebook Graph API上传视频至页面失败,求解决方案
解决Facebook页面视频上传的OAuthException错误
一、修正请求代码的核心问题
你的代码存在两个关键错误,直接导致服务器无法识别访问令牌:
- 错误混用参数与请求头:设置了
multipart/form-data头却用json=payload传递数据,requests会自动将请求头覆盖为application/json,两者冲突后服务器解析不到access_token。 - 视频参数传值错误:
source需要传递文件对象,而非文件路径字符串。
修正后的代码:
import requests PAGE_ACCESS_TOKEN = '...' pageId = '你的页面ID' location_of_video = 'Pokemon.mp4' # 用data传递令牌,files传递视频文件 data = {'access_token': PAGE_ACCESS_TOKEN} # 用with语句自动管理文件资源更安全 with open(location_of_video, 'rb') as video_file: files = {'source': video_file} url = f'https://graph-video.facebook.com/v14.0/{pageId}/videos' r = requests.post(url, data=data, files=files) print(r.text)
二、验证访问令牌的有效性与权限
错误提示An access token is required也可能是令牌本身的问题,按以下步骤排查:
- 确认令牌类型:确保使用的是页面访问令牌(Page Access Token),而非用户访问令牌。需在Graph API Explorer中选择目标页面后生成对应令牌。
- 检查必要权限:页面令牌必须包含以下权限才能上传视频:
pages_show_listpages_manage_postspages_read_engagement
可在Facebook开发者工具的Graph API Explorer中,通过debug_token端点查看令牌的权限列表是否齐全。
- 验证令牌有效性:调用
GET /debug_token?input_token=你的令牌&access_token=你的应用令牌接口,检查令牌是否过期、是否与目标页面正确绑定。
三、额外注意事项
- API版本:v14.0是较旧版本,建议升级到最新稳定版(如v18.0),避免版本兼容性问题。
- 视频规格:确保视频符合Facebook要求(如MP4格式,H.264编码、AAC音频),且文件大小在平台限制范围内。
内容的提问来源于stack exchange,提问作者Ochimot
相关产品推荐
相关产品推荐

