如何使用CURL在Facebook页面上发布帖子,而不使用PHP中的SDK

如何使用CURL在Facebook页面上发布帖子,而不使用PHP中的SDK,php,facebook,facebook-graph-api,curl,Php,Facebook,Facebook Graph Api,Curl,我正在开发一个需要Facebook集成的PHP项目。因此,在我对代码进行测试之前,我将使用Facebook Graph API explorer工具()对其进行测试。我现在正在做的是 第一步 第二步 第三步 它运行得非常好,并发布在我的Facebook粉丝页面上。但是当我尝试用PHP代码替换“第三步”时 $data['message'] = "my message"; $data['access_token'] = $page_access_token; //page token from

我正在开发一个需要Facebook集成的PHP项目。因此,在我对代码进行测试之前,我将使用Facebook Graph API explorer工具()对其进行测试。我现在正在做的是

第一步

第二步

第三步

它运行得非常好,并发布在我的Facebook粉丝页面上。但是当我尝试用PHP代码替换“第三步”时

$data['message'] = "my message";


$data['access_token'] = $page_access_token; //page token from 2nd step
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, 'https://graph.facebook.com/{page_id}/feed');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, 1);


$resp = curl_exec($ch);

curl_close($ch);

$data_resp = json_decode($resp);

print_r($data_resp);
它告诉我这个错误

stdClass Object ( [error] => stdClass Object ( [message] => (#200) Permissions error [type] => OAuthException [code] => 200 ) ) 
我设置了管理页面、发布页面和发布操作的权限


请看下面的文档

权限

  • 具有
    publish\u actions
    权限的用户访问令牌可用于代表此人发布新帖子。帖子将以用户的声音出现
  • 具有
    publish\u pages
    权限的页面访问令牌可用于代表该页面发布新帖子。帖子将出现在页面的语音中
您应该通过运行已使用的访问令牌


要查看它是否包含适当的权限。

CURLOPT\u POSTFIELDS
传递数组意味着cURL将以内容类型
多部分/表单数据
的形式发送请求,但您需要
应用程序/x-www-form-urlencoded


$data
数组上使用
http\u build\u query
,并将结果字符串用于
CURLOPT\u POSTFIELDS

调试
访问令牌
并检查其是否获得所需的权限。对令牌很好,它包含所有必需的权限。
Make a POST request to "{page_id}/feed" with the fields message={message} and access_token={page_token}
$data['message'] = "my message";


$data['access_token'] = $page_access_token; //page token from 2nd step
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, 'https://graph.facebook.com/{page_id}/feed');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, 1);


$resp = curl_exec($ch);

curl_close($ch);

$data_resp = json_decode($resp);

print_r($data_resp);
stdClass Object ( [error] => stdClass Object ( [message] => (#200) Permissions error [type] => OAuthException [code] => 200 ) )