You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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),旧版本不支持新的权限机制
  • 验证页面令牌权限:
    1. 先确保生成页面令牌用的用户短期令牌,已经获取了pages_read_engagement和pages_manage_posts权限
    2. 通过/{user-id}/accounts端点获取页面令牌时,这两个权限会自动继承到页面令牌中
    3. 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:22