How to fetch facebook likes, share, comments count from an article
Actually you can have a more detailed report using FQL. Try following query:
- SELECT url, normalized_url, share_count, like_count, comment_count, total_count, commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url = 'www.apple.com'
Here the php code:
$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 = '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));
And this is the expected result:
Array
(
[0] => stdClass Object
(
[url] => www.apple.com
[normalized_url] => http://www.apple.com/
[share_count] => 355693
[like_count] => 500374
[comment_count] => 290890
[total_count] => 1146957
[commentsbox_count] => 2
[comments_fbid] => 388265801869
[click_count] => 16558
)
)
This solution worked for me:
<?php
$source_url = "http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30";
$url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url);
$xml = file_get_contents($url);
$xml = simplexml_load_string($xml);
echo "Share --- ".$shares = $xml->link_stat->share_count;
echo "<br/>";
echo "Like --- ".$likes = $xml->link_stat->like_count;
echo "<br/>";
echo "Comments ---".$comments = $xml->link_stat->comment_count;
echo "<br/>";
echo "Total --- ".$total = $xml->link_stat->total_count;
echo "<br/>";
echo $max = max($shares,$likes,$comments);
result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
$photoid = $row['photoid'];
$likes = $facebook->api("/$photoid/likes");
echo "<br><br>".$row['photoid'];
echo "<br />";
foreach ($likes['data'] as $like)
{
$likeid = $like['id'];
$name = $like['name'];
echo "<br>like : ".$like['id']." , ".$like['name'];
$query = sprintf("INSERT INTO photo_like VALUES (%s,%s,'%s')",$user_id,$likeid,$name);
echo "<br>query string : ".$query."<br><br>";
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
echo "<br>";
}