我正在开发一个需要Facebook集成的PHP项目。所以在我对代码进行处理之前,我正在使用Facebook Graph API资源管理器工具(https://developers.facebook.com/tools/explorer)对其进行测试。我现在正在做的是。
第一步
Get the user access_token by using the button at the top left.
第二步
Make a GET request to "me/accounts" to get the page token and page id.
第3步
Make a POST request to "{page_id}/feed" with the fields message={message} and access_token={page_token}
它工作得很好并张贴在我的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 ) )
我设置了manage_pages,publish_pages,publish_actions
的权限
答案 0 :(得分:2)
传递CURLOPT_POSTFIELDS
数组意味着cURL会将请求作为内容类型multipart/form-data
发送 - 但您需要application/x-www-form-urlencoded
代替。
在http_build_query
数组上使用$data
,并将结果字符串用于CURLOPT_POSTFIELDS
。
答案 1 :(得分:-1)
查看
上的文档<强>权限强>
- 具有
publish_actions
权限的用户访问令牌可用于代表该人发布新帖子。帖子将以用户的声音显示。- 具有
publish_pages
权限的网页访问令牌可用于代表该网页发布新帖子。帖子将出现在页面的声音中。
您应该通过
运行使用过的访问令牌查看它是否包含相应的权限。