Facebook PHP SDK获得喜欢计数
我有一个facebook应用程序,在用户墙上发布。在帖子中有一个链接(指向我的应用程序),在喜欢的页面中有一个链接 现在我正在制作一个每小时运行一次的脚本(从crontab设置)。在该脚本中,我需要得到两个不同的喜欢计数:Facebook PHP SDK获得喜欢计数,php,facebook,facebook-like,Php,Facebook,Facebook Like,我有一个facebook应用程序,在用户墙上发布。在帖子中有一个链接(指向我的应用程序),在喜欢的页面中有一个链接 现在我正在制作一个每小时运行一次的脚本(从crontab设置)。在该脚本中,我需要得到两个不同的喜欢计数: 喜欢贴在墙上的留言 喜欢在我的应用程序中完成(使用按钮) 对于我编写的第一个代码: $result = $facebook->api(array( 'method' => 'fql.query', 'quer
$result = $facebook->api(array(
'method' => 'fql.query',
'query' => 'SELECT user_id FROM like WHERE post_id="'.$idPost.'"'
));
$likesWall = count($result);
这段代码正在运行,但突然之间就不起作用了。它抛出以下异常:
致命错误:未捕获异常:190:
验证访问令牌时出错:错误
会话无效,因为用户
注销。在C:\(…)\facebook\base\u facebook.php中抛出
在线656
对于第二个喜欢计数
我真的不知道该怎么做。我试过:
$result = $facebook->api(array(
'method' => 'links.getStats',
'urls' => $canvasPage."somePage.php?id=".$id
));
但这会引发:
致命错误:未捕获的卷曲异常:
60:SSL证书问题,请验证
CA证书没有问题。细节:
错误:14090086:SSL
例程:SSL3\u获取\u服务器\u证书:证书
验证抛出的失败
C:\(…)\facebook\base\u facebook.php
在线759
然后这是给我的:粗体部分是我创建的like按钮中的url。当我把它放在浏览器中时,它会返回一个JSON,其中包含一些信息(包括likes计数),但我不知道如何在脚本中使用它
更多信息:
$result = $facebook->api(array(
'method' => 'fql.query',
'query' => 'SELECT user_id FROM like WHERE post_id="'.$idPost.'"'
));
$likesWall = count($result);
以下是定义facebook对象的代码:
include_once 'facebook/facebook.php';
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $secret
));
我正在使用最新版本的SDK(v3)。我找到了
我是这样做的:
function get_content($url){
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
//return $header;
return $content;
}
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $secret
));
$accessToken = get_content("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$appId."&client_secret=".$secret);
$accessToken = substr($accessToken, strpos($accessToken, "=") + 1);
$fqlResult = get_content("https://api.facebook.com/method/fql.query?query=SELECT+user_id+FROM+like+WHERE+post_id%3D\"".$idPost."\"&format=json&access_token=".$accessToken);
$fqlResult = json_decode($fqlResult);
$countLikesWall = count($fqlResult);
$fqlResult = get_content("https://api.facebook.com/method/fql.query?query=SELECT+like_count+FROM+link_stat+WHERE+url%3D\"http%3A%2F%2Fapps.facebook.com%2F**MyAppsName**%2F**somePage**.php%3Fid%3D".$id."\"&format=json&access_token=".$accessToken);
$fqlResult = json_decode($fqlResult);
$countLikesUrl = $fqlResult[0]->like_count;
您应该添加应用程序需要用户的“读取流”权限。如果您没有该权限,查询将返回一个空数组,如“[]”即可,谢谢!我认为这应该是答案中的注释,而不是其他答案。您不明白哪部分?函数get_content($url){那一部分,你肯定会以某种方式调用该函数,那么你把什么作为$url?你必须把facebook API的任何url放在代码中。代码中显示了如何使用。创建$facebook后,我使用get_内容三次。为什么你仍然加载facebook类?@Andrei我很久以前就编写了该代码,但它似乎没有使用。我想所有这些都是这样重构时我忘了删除行。