调用Facebook发布API成功却返回权限错误#10问题咨询
Facebook Graph API 发布带视频帖子成功但返回权限错误的问题
问题场景
我通过Facebook发布API发布带视频的帖子,代码如下:
$res = Http::post(env('FB_API').'31457605812596/videos?published=false&access_token='.'my-token', [ 'file_url' => 'https://cdn.filestackcontent.com/f4Cu9feSQuisHdTuncXz' ]); $fileIds[] = ['media_fbid' => json_decode($res->body())->id]; $uri = env("FB_API") . '31457605812596' . "/feed?access_token=my-token"; $res = Http::post($uri, [ "message" => 'Test', "attached_media" => $fileIds, ]); dd($res->body());
帖子已成功发布且视频正常显示,但返回如下错误信息:
{"error":{"message":"(#10) Application does not have permission for this action","type":"OAuthException","code":10,"fbtrace_id":"AKAT6MW-1Z88JUnfH6PZdmP"}}
补充信息
我拥有的权限包括:
publish_to_groups pages_manage_engagement pages_read_user_content pages_read_engagement pages_manage_posts pages_show_list instagram_basic publish_video
我是该目标页面的管理员。
原因分析及解决建议
这不是Facebook端的Bug,帖子成功发布说明核心流程没问题,错误是API调用过程中某个环节的权限校验触发的,具体原因和解决方法如下:
可能原因
- 两次调用的权限校验差异:第一次上传草稿视频用
publish_video权限即可,但第二次发布feed帖子时,API对attached_media关联草稿视频的操作有额外权限校验,虽然最终发布成功,但校验环节抛出了错误。 - Access Token权限有效性问题:虽然权限列表显示拥有相关权限,但实际使用的access token可能未正确包含
pages_manage_posts,或者权限已过期、失效。 - 隐性权限限制:未通过审核的应用,部分权限在生产环境可能存在隐性限制,即使权限列表显示拥有,也可能触发校验错误。
解决建议
- 验证Access Token:用Facebook官方的令牌调试工具检查你的token,确认
pages_manage_posts和publish_video权限确实有效且未过期。 - 合并API调用:直接在上传视频时完成发布,避免两次调用的权限冲突,示例代码:
$res = Http::post(env('FB_API') . '31457605812596/videos?access_token=my-token', [ 'file_url' => 'https://cdn.filestackcontent.com/f4Cu9feSQuisHdTuncXz', 'published' => true, 'message' => 'Test' ]); dd($res->body());
- 检查应用审核状态:如果是测试应用,确保已完成必要的权限审核,避免生产环境的隐性限制。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

