我必须做一个非常简单的操作,但我的编程技巧还不够。我必须在Facebook页面中统计喜欢并在我的网站上打印该号码。我有两个脚本可以很好地完成普通网站的工作,但是他们不想显示页面的喜欢数量。
<?php
$source_url = "http://www.facebook.com/"; //This could be anything URL source including stripslashes($_POST['url'])
$url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url);
$likes = $xml->link_stat->like_count;
$comments = $xml->link_stat->comment_count;
$total = $xml->link_stat->total_count;
$max = max($shares,$likes,$comments);
echo $likes;
?>
<?php
$fql = "SELECT url, normalized_url, share_count, like_count, comment_count, ";
$fql .= "total_count, commentsbox_count, comments_fbid, click_count FROM ";
$fql .= "link_stat WHERE url = 'http://www.apple.com/'";
$apifql="https://api.facebook.com/method/fql.query?format=json&query=".urlencode($fql);
$json=file_get_contents($apifql);
print_r( json_decode($json));
?>
这两个脚本都适用于普通的网站,但不能获取fb页面喜欢的数字。可能是我应该以其他格式输入链接?
我可以使用这个http://graph.facebook.com/?ids=AutoSpecCenter这样的图表来获取所需数据,只需输入这样的页面名称即可。但我不知道如何操纵这些数据。
答案 0 :(得分:7)
正如您在问题中所写,您可以通过Facebook的Graph API查询此类信息。这个简短的例子将获得可口可乐页面的信息,解码JSON并输出喜欢页面$data->likes
的人数。
<?php
$ch = curl_init("https://graph.facebook.com/CocaCola?access_token=<Access Token>");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$raw = curl_exec($ch);
curl_close($ch);
$data = json_decode($raw);
echo $data->likes . " people like Coca-Cola";
?>
如果您需要执行更多任务而不仅仅是获取某个页面,请考虑使用Facebook SDK作为 cpilko 建议。
答案 1 :(得分:2)
这是快速而肮脏的方式:
<?php
$fb_id = 'AutoSpecCenter';
$url = 'https://graph.facebook.com/' . urlencode($fb_id);
$result = json_decode( file_get_contents($url) );
printf("<p>There are %s people who like %s</p>", $result->likes, $result->name);
您最好安装Facebook PHP SDK或使用cURL来实现此目的。
您也可以将$fb_id
设置为等于网址。
答案 2 :(得分:1)
这里也是一个简单的方法......
<?php
$page_id = 'yourfbpageid'; // your facebook page id
$xml = @simplexml_load_file("http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id=".$page_id."") or die ("a lot");
$fans = $xml->page->fan_count;
?>
<li class="text white"><span></span><?php echo $fans.' Fans'; ?></li>
答案 3 :(得分:1)
这对我有用
<?php
function getData($username){
$access_token = 'YOUR ACCESS TOKEN'; //Replace it with your Access Token
$json = json_decode(file_get_contents("https://graph.facebook.com/".$username."?fields=fan_count&access_token=".$access_token),true);
return $json;
}
$data = getData("Mypage");//Replace it with your Username
$likes = $data['fan_count'];
echo "Facebook Likes: ".$likes;
?>
答案 4 :(得分:0)
我遇到了同样的问题,只需在参数中添加likes.summary(true),comments.summary(true)
以对抗为我工作的“字段”。
e.g。我使用了https://graph.facebook.com/me/feed?access_token=ACCESS_TOKEN&fields=story,from,story_tags,likes.summary(true),comments.summary(true)
而不是https://graph.facebook.com/me/feed?access_token=ACCESS_TOKEN
如果需要,您还可以添加其他参数;由a分隔,
此外,如果你想要单个帖子的数量,你可以使用
https://graph.facebook.com/POST_ID/likes?summary=true&access_token=ACCESS_TOKEN
喜欢计数
或
https://graph.facebook.com/POST_ID/comments?summary=true&access_token=ACCESS_TOKEN
评论计数
答案 5 :(得分:0)
试试此代码
<?php echo facebooklike('209414452444193');
function facebooklike($page_id){
$likes = 0; //Initialize the count
//Construct a Facebook URL
$json_url ='https://graph.facebook.com/'.$page_id.'';
$json = get_contents($json_url);
$json_output = json_decode($json);
//Extract the likes count from the JSON object
if($json_output->likes){
$likes = $json_output->likes;
}
return $likes;
}
function get_contents($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>