Facebook Graph API PHP SDK以页面形式发布在页面上
这是PHP的最后一次尝试,如果失败,我将尝试使用JS。所以我的目标是通过PHP在FB页面上发布“页面名称”:这就是我想要得到的 但我得到的只是下面的图片。此外,它仅对该配置文件可见(不对喜欢/等的朋友/ppl可见) 这是我当前的代码Facebook Graph API PHP SDK以页面形式发布在页面上,php,api,facebook,Php,Api,Facebook,这是PHP的最后一次尝试,如果失败,我将尝试使用JS。所以我的目标是通过PHP在FB页面上发布“页面名称”:这就是我想要得到的 但我得到的只是下面的图片。此外,它仅对该配置文件可见(不对喜欢/等的朋友/ppl可见) 这是我当前的代码 function post_facebook($data=null, $redir = null){ $result = ""; require_once (ROOT. "/apps/configuration/models/Co
function post_facebook($data=null, $redir = null){
$result = "";
require_once (ROOT. "/apps/configuration/models/ConfigurationItem.php");
require_once (ROOT . "/components/facebook/facebook.php");
$this->ConfigurationItem = new ConfigurationItem($this->getContext());
$row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_login');
$apiid=$row['value']; <= Correct apiid
$row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_pass');
$secret=$row['value']; <= Correct secret key
$facebook = new Facebook(array(
'appId' => $apiid,
'secret' => $secret,
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
$message=$data['facebook_text'];
$attachment = array(
'message' => $data['facebook_text'],
'name' => $data['name'],
'link' => $this->getLinkToLatestNews(),
'description' => '',
);
try {
$facebook->api('/PAGE ID/feed/', 'post', $attachment);
$result = "Facebook: Sent";
} catch (FacebookApiException $e) {
$result = "Facebook: Failed";
error_log($e);
}
} else {
$login_url = $facebook->getLoginUrl();
header("Location: ".$login_url);
exit;
}
echo $result;
exit;
//return $result;
}
function post\u facebook($data=null,$redir=null){
$result=“”;
需要一次(ROOT./apps/configuration/models/ConfigurationItem.php);
需要一次(ROOT./components/facebook/facebook.php);
$this->ConfigurationItem=newconfigurationItem($this->getContext());
$row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_login');
$apid=$row['value'];ConfigurationItem->findByCatKeyItemKey('system','facebook_pass');
$secret=$row['value'];$apid,
'secret'=>$secret,
“cookie”=>正确,
));
$session=$facebook->getSession();
$me=null;
如果($会议){
试一试{
$uid=$facebook->getUser();
$me=$facebook->api('/me');
}捕获(FacebookApiException$e){
错误日志($e);
}
$message=$data['facebook_text'];
$attachment=array(
'message'=>$data['facebook_text'],
'name'=>$data['name'],
'link'=>this->getLinkToLatestNews(),
'说明'=>'',
);
试一试{
$facebook->api('/PAGE ID/feed/'、'post'、$attachment);
$result=“Facebook:Sent”;
}捕获(FacebookApiException$e){
$result=“Facebook:Failed”;
错误日志($e);
}
}否则{
$login_url=$facebook->getLoginUrl();
标题(“位置:”.$login\u url);
出口
}
回声$结果;
出口
//返回$result;
}
我做错了什么?我在API文档/顶级谷歌搜索结果中找不到任何东西,只有JS。谢谢你的帮助 您需要确保为用户请求“管理页面”权限。一旦你有了这个功能,你就可以使用
$facebook->api('/me/accounts')
,然后你会收到一个令牌(连同页面信息),你可以用它作为页面发布在页面上。我一天的大部分时间都在挣扎,然后发现不使用setAccessToken(page\u access\u令牌)是阻止它为我工作的唯一原因。我在18个月前的一个stackoverflow帖子中发现了这一点。我将把我的解决方案放在这里,供将来有此问题的人参考:
protected $scope = "email,publish_stream,manage_pages";
$url = "{$api_url}/{$fbusername}/accounts?access_token=".$access_token;
$response = json_decode(file_get_contents($url));
foreach($response->data as $data) {
try
{
$res = $this->SDK->setAccessToken($data->access_token);
$res = $this->SDK->api(
"{$data->id}/feed",
"POST",
array('link' => 'www.example.com',
'message' => 'This is a test message from php',)
);
log::debug(__FUNCTION__, print_r($res,true));
}
catch (Exception $e)
{
log::debug(__FUNCTION__, $e->getType().": ".$e->getMessage());
}
}
解决这个问题的关键是获取访问令牌——我之前错过了这一部分。我欠你的!您好,您是否能够发布带有图像的链接(如海报页面)?请在代码中添加一些说明,以便其他人可以从中学习
$feed = '/v2.8/' . $pageID . '/' . "feed";
$params = array(
"access_token" => AQUI TU TOKEN // see: https://developers.facebook.com/docs/facebook-login/access-tokens/
);
$params[ "link" ] = "https://zapatillasnewbalancebaratas.blogspot.com/2018/11/zapatilla-new-balance-ml515-col.html";
$params[ "message" ] = "Zapatilla New Balance Ml515 Col";
$params[ "method" ] = POST;
$graph_url = "https://graph.facebook.com" . $feed;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $graph_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
echo $output;
curl_close($ch);