使用Facebook PHP SDK以页面身份发帖遇权限错误求助
解决Facebook PHP SDK以页面身份发帖的#200错误
问题核心原因
你碰到的#200错误,主要出在这三点:
- 用的Graph API版本太老(v2.2),完全不兼容Facebook当前的权限规则,新要求的
pages_read_engagement和pages_manage_posts权限在旧版本里根本不生效 - 页面访问令牌没正确获取到
pages_read_engagement和pages_manage_posts这两个必填权限 - 你可能不是目标页面的管理员,或者管理员权限不足以发布内容
具体解决步骤
- 升级Graph API版本:Facebook的v2.2版本早已被淘汰,必须换成最新稳定版(比如v18.0),旧版本不支持新的权限机制
- 验证页面令牌权限:
- 先确保生成页面令牌用的用户短期令牌,已经获取了
pages_read_engagement和pages_manage_posts权限 - 通过
/{user-id}/accounts端点获取页面令牌时,这两个权限会自动继承到页面令牌中 - 用Facebook官方的访问令牌调试工具检查页面令牌,确认包含上述两个权限
- 先确保生成页面令牌用的用户短期令牌,已经获取了
- 确认管理员身份:你必须是目标Facebook页面的管理员,且在页面角色设置里拥有“发布内容”的权限
修改后的代码示例
<?php require_once('vendor/autoload.php'); $pageAccessToken = '你的有效页面访问令牌'; $pageID = '你的页面ID'; $fb = new Facebook\Facebook([ 'app_id' => '你的APP ID', 'app_secret' => '你的APP Secret', 'default_graph_version' => 'v18.0', // 升级到最新稳定版 ]); // 发帖数据 $linkData = [ 'link' => 'https://www.mydomain.uk', // 必须加上http/https协议头 'message' => 'Test Post' ]; try { $response = $fb->post('/'.$pageID.'/feed', $linkData, $pageAccessToken); } catch(Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph返回错误: '.$e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK返回错误: '.$e->getMessage(); exit; } $graphNode = $response->getGraphNode(); echo '帖子发布成功,ID: ' . $graphNode['id']; ?>
内容的提问来源于stack exchange,提问作者Complete Noob
相关产品推荐
相关产品推荐

