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

Facebook Graph API v11升级v12后发布内容报错问题咨询

问题解决方案

核心原因

Facebook Graph API v12 版本起正式永久废弃publish_actions权限,同时调整了公共主页内容发布的权限校验逻辑,旧版本适配逻辑不再兼容。

修复步骤

1. 权限与令牌调整

  • 首先确认你的应用已经申请并通过了pages_read_engagement、pages_manage_posts两个权限的审核(未公开的测试应用可直接在测试用户/测试主页权限配置中开启,无需审核)
  • 不要使用用户令牌发起发布请求,需前往Graph API调试工具生成目标公共主页对应的页面令牌,确保令牌有效期为长期有效,且权限列表包含上述两个权限
  • 确认生成令牌的Facebook账号对目标公共主页拥有至少「编辑」及以上的管理权限

2. 代码调整

原有代码缺少Graph API版本声明,且端点使用/me/photos容易被识别为用户个人主页发布,需做两处修改:

  1. 初始化Facebook实例时显式指定v12版本
  2. 发布端点替换为/{你的公共主页ID}/photos,也可以在传入正确页面令牌的情况下保留/me/photos,显式指定ID兼容性更高
    修改后的代码示例:
require_once __DIR__ . '/vendor/autoload.php';

$fb = new Facebook\Facebook([
  'app_id' => '[App ID]',
  'app_secret' => '[App Secret]',
  'default_graph_version' => 'v12.0', // 新增版本声明
]);

// 此处替换为你生成的目标公共主页页面令牌
$fb->setDefaultAccessToken('[页面访问令牌]');

$data = [
  'message' => 'Testing 1..2..3..',
  'source' => $fb->fileToUpload('/path/to/file.jpg'),
];

try {
  // 替换[目标主页ID]为你的公共主页数字ID
  $response = $fb->post('/[目标主页ID]/photos', $data);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

$graphNode = $response->getGraphNode();

echo 'Photo ID: ' . $graphNode['id'];
?>

3. 额外校验项

  • 确认应用已经和目标公共主页完成关联,可在公共主页设置的「应用」板块查看
  • 不要在请求参数中携带任何和publish_actions相关的配置,该权限已完全下线
  • 若仍报错,可先将令牌放到Graph API调试工具中,直接调用发布接口排查权限或参数问题

内容的提问来源于stack exchange,提问作者yoi55

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:03