如何解决Facebook PHP SDK越来越喜欢计数
| 我有一个Facebook应用程序,该应用程序发布在用户墙上。在帖子中有一个(指向我的应用程序的)链接,在喜欢的页面中有一个喜欢的按钮。 现在,我正在制作一个每小时运行一次的脚本(从crontab中设置)。在该脚本中,我需要获得两个不同的喜欢计数: 喜欢在墙上张贴的消息。 喜欢在我的应用中完成的操作(使用按钮)。 对于第一个,我编写了以下代码:$result = $facebook->api(array(
\'method\' => \'fql.query\',\'query\' => \'SELECT user_id FROM like WHERE post_id=\"\'.$idPost.\'\"\'
));
$likesWall = count($result);
该代码有效,但突然无效。它引发以下异常:
致命错误:未捕获的异常:190:
验证访问令牌时出错:
会话无效,因为用户
登出。抛出在C:\\(...)\\ facebook \\ base_facebook.PHP
在656行
对于第二喜欢计数
我真的不知道该怎么做。我试过了:
$result = $facebook->api(array(
\'method\' => \'links.getStats\',\'urls\' => $canvasPage.\"somePage.PHP?id=\".$id
));
但这引发:
致命错误:未捕获的CurlException:
60:SSL证书问题,请验证
CA证书还可以。细节:
错误:14090086:SSL
例程:SSL3_GET_SERVER_CERTIFICATE:证书
验证抛出失败
C:\\(...)\\ facebook \\ base_facebook.PHP
759行
然后将其提供给我:http://graph.facebook.com/?ids=http://apps.facebook.com/appName/somePage.PHP?id=68&Metadata=1其中粗体部分是网址我创建的赞按钮。当我将其放在浏览器中时,它会返回一个带有一些信息(包括喜欢计数)的JSON,但我不知道如何在脚本中使用它。
更多信息:
这是定义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;
, 您应该添加该应用需要用户的“ read_stream \”权限。如果您没有该权限,查询将返回一个空数组,例如\“ [] \”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。