Facebook Graph API请求返回400错误,调用private_replies返回2500 OAuthException
问题根因
- 核心错误是
access_token传参方式错误:你把token参数放到了requests库的files参数中传递,files是用于上传文件的表单字段,Facebook的接口无法从该参数中读取到token,相当于请求未携带有效访问凭证,直接触发2500 OAuthException报错。 - 代码存在语法疏漏:你定义
params字典时缺少闭合的花括号},如果实际运行的代码未修正该问题,也会先触发本地语法错误。 - 额外可能的诱因:你使用的
Page_Token本身无效,包括过期、未申请对应接口权限、不是页面专属的访问令牌等。
修复方案
- 修正参数传递逻辑,将
access_token放到查询参数或者授权头中传递,参考修正后的private_reply函数代码:
def private_reply(comment_ids): url = "https://graph.facebook.com/v12.0/me/messages" # 把access_token放到查询参数里 params = { "access_token": Page_Token, "recipient": { "comment_id": comment_ids }, "message": { "text": "Testing Private_Replies" } } request = requests.post(url=url, json=params) # 可以打印返回内容方便排错 print(request.status_code, request.json())
- 检查
Page_Token的有效性:
- 确认令牌是对应目标Facebook页面的页面访问令牌,不是个人用户令牌
- 确认令牌已授予
pages_manage_metadata、pages_messaging权限 - 确认令牌未过期,可去Facebook开发者后台的工具中校验令牌有效性
- 确认目标帖子属于当前令牌绑定的页面,private_replies接口仅允许回复自身页面发布的帖子下的评论。
内容的提问来源于stack exchange,提问作者Caivy
相关产品推荐
相关产品推荐

