为给定的URL获取Facebook /共享计数

我正在使用Facebook API来获取给定url的类似/共享计数。 奇怪的是,在返回结果中似乎很不一致。 例如,这个页面返回结果:

 https://api.facebook.com/method/fql.query?query=select%20total_count,like_count,comment_count,share_count,click_count%20from%20link_stat%20where%20url='http://www.groupon.com/deals / seattlehelitourscom逐经典直升机CORP'&格式= JSON

而这个不是:

 https://api.facebook.com/method/fql.query?query=select%20total_count,like_count,comment_count,share_count,click_count%20from%20link_stat%20where%20url='http://www.livingsocial.com/deals / 278194-日落皮划艇-热杂烩'&格式= JSON

第二页显然有一个共享计数,当我检查页面的HTML,正在使用共享的URL是我已经放在上面的API请求。 但是,API不会响应任何数量的喜欢或份额的计数信息。

任何线索为什么API可能会响应一些URL而不是其他人?

更新: 此解决scheme不再有效。 自2016年8月7日起,FQL已弃用。


https://api.facebook.com/method/fql.query?query=select%20%20like_count%20from%20link_stat%20where%20url=%22http://www.techlila.com%22

另外http://api.facebook.com/restserver.php?method=links.getStats&urls=http://www.techlila.com会显示所有的数据,如“共享计数”,“像计数”和“评论计数“和所有这些的总和。;

根据需要更改URL(即http://www.techlila.com )。

这是正确的url,我得到正确的结果。

编辑(2017年5月):从v2.9开始,您可以创build一个graphicsAPI调用,其中ID是URL并select“约定”字段,下面是与graphics浏览器中的示例的链接。

https://developers.facebook.com/tools/explorer/?method=GET&path=%3Fid%3Dhttp%3A%2F%2Fcomunidade.edp.pt%26fields%3Dengagement&version=v2.9

截至2016年8月8日,FQL已弃用。


更新10/2017(v2.10):

这是一个非弃用的方式来获得一个给定的URL和共享计数(不需要访问令牌):

https://graph.facebook.com/?fields=og_object{likes.summary(total_count).limit(0)},share&id=https://www.stackoverflow.com


结果:

{ "og_object": { "likes": { "data": [ ], "summary": { "total_count": 83 } }, "id": "10151023731873397" }, "share": { "comment_count": 0, "share_count": 2915 }, "id": "https://www.stackoverflow.com" } 

JQuery示例:

 $.get('https://graph.facebook.com/' + '?fields=og_object{likes.summary(total_count).limit(0)},share&id=' + url-goes-here, function (data) { if (data) { var like_count = data.og_object.likes.summary.total_count; var share_count = data.share.share_count; } }); 

参考:

https://developers.facebook.com/docs/graph-api/reference/url

使用开放graphicsAPI。 这里有一个现场的例子,询问有多less人喜欢“可口可乐”。

https://developers.facebook.com/tools/explorer/?method=GET&path=cocacola%3Ffields%3Dlikes

归结为:

https://graph.facebook.com/cocacola?fields=likes

你可以在AJAX GET中做什么

结果是:

 { "likes": 71717854, "id": "40796308305" } 

之前的所有答案都已被弃用。 该方法于2016年8月开始运作:


要获得任何url的相似计数:

GET请求: https : //graph.facebook.com/[url]/ access_token =[access_token]

然后从返回的JSON对象中获取shares-> share_count。


粉丝数量为Facebook页面:

GET请求: https : //graph.facebook.com/[url] / ?fields=fan_count&access_token=[access_token]

然后从返回的JSON对象中获取“fan_count”字段。


您可以使用graphicsAPI资源pipe理器对此进行testing并获取您的访问令牌

Facebook图表很棒。 只要做下面的事情。 我已经entereted perl.org的URL,你可以把任何URL在那里。

https://graph.facebook.com/fql?q=SELECT%20like_count,%20total_count,%20share_count,%20click_count,%20comment_count%20FROM%20link_stat%20WHERE%20url%20=%20%27http://perl.org %27

对于最新的2.1graphicsAPI,获得喜欢imdb.com的例子将是

使用这个来获取id https://developers.facebook.com/tools/explorer/?method=GET&path=%3Fid%3Dhttp%253A%252F%252Fwww.imdb.com%3Ffields%3Dlikes&version=v2.1

然后得到喜欢

https://developers.facebook.com/tools/explorer/?method=GET&path=414652589771%2Flikes&version=v2.1

文件

 URL /?id={url} Represents an external URL as it relates to the Facebook social graph - shares and comments from the URL on Facebook, and any Open Graph objects associated with the URL. 

参考http://harshtechtalk.com/how-get-likes-count-posts-comments-facebook-graph-api/

您可以显示Facebook的分享/像这样的计数:( testing和确认)

 $url = http://www.yourdomainname.com // You can use inner pages $rest_url = "http://api.facebook.com/restserver.php?format=json&method=links.getStats&urls=".urlencode($url); $json = json_decode(file_get_contents($rest_url),true); echo Facebook Shares = '.$json[0][share_count]; echo Facebook Likes = '.$json[0][like_count]; echo Facebook Comments = '.$json[0][comment_count]; 

对于图API API v2.1,只能使用1个呼叫来获得类似的计数,因此不需要经过分页。

例如,获取http://www.imdb.com的喜好数量;

https://graph.facebook.com/414652589771/likes?summary=1

图表API资源pipe理器https://developers.facebook.com/tools/explorer/?method=GET&path=414652589771%2Flikes%3Fsummary%3D1&version=v2.1

这是不知何故没有logging(至less在我提交这个答案的时刻…)。 我在https://stackoverflow.com/a/18198957/1822624find了答案;

使用下面的url,并将myurlreplace为您的posturl,您将获得所有的东西

http://api.facebook.com/restserver.php?method=links.getStats&urls=myurl

但请记住,它只会以XML格式给出响应

例如:

 <share_count>1</share_count> <like_count>8</like_count> <comment_count>0</comment_count> <total_count>9</total_count> <click_count>0</click_count> <comments_fbid>**************</comments_fbid> <commentsbox_count>0</commentsbox_count> 

我看到这个很好的教程,如何使用PHP从Facebook获得类似的计数。

 public static function get_the_fb_like( $url = '' ){ $pageURL = 'http://nextopics.com'; $url = ($url == '' ) ? $pageURL : $url; // setting a value in $url variable $params = 'select comment_count, share_count, like_count from link_stat where url = "'.$url.'"'; $component = urlencode( $params ); $url = 'http://graph.facebook.com/fql?q='.$component; $fbLIkeAndSahre = json_decode( $this->file_get_content_curl( $url ) ); $getFbStatus = $fbLIkeAndSahre->data['0']; return $getFbStatus->like_count; } 

这里是一个示例代码..我不知道如何粘贴在这里正确的格式的代码,所以只是请访问此链接更好地查看代码。

创build一个自定义Facebook像计数器

你需要扩展权限“read_stream”,然后你需要调用Facebook API端点,并添加likes,shares到你的fields

这个电话

 https://developers.facebook.com/tools/explorer?method=GET&path=me/feed?fields=likes,shares 

会返回这样的数据数组

 { "data": [ { "likes": { "data": [ { "name": "name of user who liked status ", "id": "id of user who liked status " } ], "count": number of likes }, "shares": { "count": number of shares }, "id": "post id", "created_time": "post creation time" } ] } 

你的问题是相当古老的,现在Facebook已经贬低了FQL,但你仍然可以使用这个工具: Facebook分析 。 然而,你会发现,如果你想知道谁喜欢或评论的细节将需要很长时间才能获得。 这是因为Facebook一次只能提供非常小的一部分数据,并且需要大量的分页来获取所有内容。

我不认为Facebook的开放graphics对象,即“og_object”提供超过comment_count&share_count一个URL。 尝试这个; 在下面的链接中用您的访问令牌replace$ YOUR_URL的URL和$ ACCESS_TOKEN https://graph.facebook.com/v2.5/ $ YOUR_URL?access_token = $ ACCESS_TOKEN

例如:

https://graph.facebook.com/v2.5/http://espn.go.com/nfl/story/_/id/14424066/handing-holiday-gifts-all-32-nfl-teams-nfl?; access_token = $ ACCESS_TOKEN

 { og_object: { id: "956517601094822", description: "Naughty or nice, every NFL team deserves something for Christmas. So in lieu of Santa Claus, Bill Barnwell is here to distribute some gifts.", title: "Barnwell: Handing out holiday gifts to all 32 teams", type: "article", updated_time: "2015-12-23T17:20:55+0000", url: "http://espn.go.com/nfl/story/_/id/14424066" }, share: { comment_count: 0, share_count: 354 }, id: "http://espn.go.com/nfl/story/_/id/14424066/handing-holiday-gifts-all-32-nfl-teams-nfl" } 

此外,如果您尝试获取喜欢,您将得到以下错误https://graph.facebook.com/http://rottentomatoes.com?fields=likes&summary=1&access_token= $ ACCESS_TOKEN

 { error: { message: "(#100) Tried accessing nonexisting field (likes) on node type (URL)", type: "OAuthException", code: 100, fbtrace_id: "H+KksDn+mCf" } }