获取给定 URL 的 Facebook 喜欢/分享计数

Posted

技术标签:

【中文标题】获取给定 URL 的 Facebook 喜欢/分享计数【英文标题】:Getting the Facebook like/share count for a given URL 【发布时间】:2012-04-01 11:10:31 【问题描述】:

我正在使用 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-by-classic-helicopter-corp'&format=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-日落皮划艇-热杂烩'&format=json

第二页显然有一个共享计数,当我检查页面的 html 时,用于共享的 URL 是我在上面的 API 请求中放置的 URL。但是,API 不会响应任何点赞数或分享数的计数信息。

关于为什么 API 可能会响应某些 URL 而不会响应其他 URL 的任何线索?

【问题讨论】:

似乎 Rest API 已被弃用。对此有何猜测? 【参考方案1】:

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


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 开始,您可以进行图形 API 调用,其中 ID 是 URL 并选择“参与”字段,下面是图形资源管理器中示例的链接。

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

【讨论】:

可以得到相同的JSON格式结果:graph.facebook.com/… @Vladimir 该 URL 是官方 API 的一部分,还是会被弃用?似乎您不需要 API 密钥即可使用它.. 是的,它是官方 API 的一部分。此请求使用 Facebook 查询语言 (FQL) developers.facebook.com/docs/technical-guides/fql 自 API 2.1+ 起,FQL 确实已被弃用。检查下面vincentlcy的答案或***.com/questions/4764562/… 自 2016 年 8 月 8 日起,FQL 将不再可用且无法查询developers.facebook.com/docs/reference/fql【参考方案2】:

我看到了这篇关于如何使用 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;

这是一个示例代码。我不知道如何将格式正确的代码粘贴到此处,因此请访问此链接以更好地查看代码。

Creating a Custom Facebook like Counter

【讨论】:

【参考方案3】:

使用开放图形 API。这是一个查询“可口可乐”有多少赞的实时示例。

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"

【讨论】:

请求此资源需要访问令牌。 使用第一个链接并获取访问令牌 从 v2.6 开始,这不会返回喜欢的数量,而是返回喜欢的名称和 id 分页。 问题是关于 URL,但您的答案是关于 Facebook 页面。【参考方案4】:

您需要扩展权限“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"
    
   ]

【讨论】:

【参考方案5】:

Facebook 图表很棒。只需执行以下操作。我输入了 perl.org 网址,你可以放任何网址。

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

【讨论】:

这是最好的答案,直截了当。端点返回一个简单的 JSON,您几乎可以从任何地方解析,甚至不必进行身份验证。完美! 这行不通了 ((#12) fql is deprecated for versions v2.1 and higher)【参考方案6】:

对于最新的 2.1 Graph API,获取 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

Document

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/

【讨论】:

这不会返回喜欢的数量,而是返回喜欢的名称和 id 分页。 要获得喜欢的总数,您需要添加?summary=true。在 Facebook 文档上长时间搜索后找到:developers.facebook.com/docs/graph-api/reference/v2.7/object/…【参考方案7】:

对于图形 API v2.1,您可以仅使用 1 次调用获得点赞数,因此无需进行分页。

例如获取http://www.imdb.com的点赞数

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

图形 API 浏览器 https://developers.facebook.com/tools/explorer/?method=GET&path=414652589771%2Flikes%3Fsummary%3D1&version=v2.1

不知何故没有记录(至少在我提交这个答案的那一刻......)。 我在https://***.com/a/18198957/1822624找到了答案

【讨论】:

【参考方案8】:

使用下面的网址并将 myurl 替换为您的帖子网址,您将获得所有内容

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>

【讨论】:

添加url参数&amp;format=json获取json格式。【参考方案9】:

我不认为 Facebook 的开放图形对象(即“og_object”)为 URL 提供的不仅仅是 comment_count 和 share_count。 尝试这个;在下面的链接中,将 $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"
  

【讨论】:

?id=#url&amp;fields=og_objectengagement,share 可以从参与对象中获得的点赞数请参阅developers.facebook.com/docs/graph-api/reference/v2.5/url 如何获得长期访问令牌? @Werner 访问令牌是 APP_ID|APP_SECRET 。看看这个smashballoon.com/custom-facebook-feed/access-token的最后一步【参考方案10】:

您可以像这样显示 Facebook 分享/喜欢计数:(经过测试和验证)

$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];

【讨论】:

终于找到了:) ***.com/questions/29702192/… 我也刚刚添加了这个问题的完整答案:)【参考方案11】:

您的问题已经很老了,Facebook 现在已经贬低了 FQL,但您仍然可以使用此实用程序完成您想要的:Facebook Analytics。但是,您会发现,如果您想要有关谁喜欢或评论的详细信息,则需要很长时间才能获得。这是因为 Facebook 一次只提供很小的数据块,并且需要大量的分页才能获取所有内容。

【讨论】:

【参考方案12】:

所有以前的答案都已被弃用。此方法自 2016 年 8 月起有效:


要获取任何 URL 的点赞数:

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

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


Facebook 页面的粉丝数:

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

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


您可以对此进行测试并使用Graph API Explorer 获取您的访问令牌

【讨论】:

对于 URL,shares_count 返回分享数 + 点赞数。【参考方案13】:

As of August 8th, 2016, FQLs are deprecated.


更新 10/2017 (v2.10):

这是获取给定 URL 的点赞数和分享数(不需要访问令牌)的一种不被弃用的方法:

https://graph.facebook.com/?fields=og_objectlikes.summary(total_count).limit(0),share&id=https://www.***.com


结果:


   "og_object": 
      "likes": 
         "data": [

         ],
         "summary": 
            "total_count": 83
         
      ,
      "id": "10151023731873397"
   ,
   "share": 
      "comment_count": 0,
      "share_count": 2915
   ,
   "id": "https://www.***.com"


JQuery 示例:

$.get('https://graph.facebook.com/'
    + '?fields=og_objectlikes.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

【讨论】:

如果共享不起作用,请尝试使用“共享”。对我来说,“股份”起作用了。快乐编码:) 我应该使用 access_token 吗? @AntonIpatov,不需要访问令牌。 可能2周后就不行了,响应码(#2)服务暂时不可用……有人知道怎么办了吗?

以上是关于获取给定 URL 的 Facebook 喜欢/分享计数的主要内容,如果未能解决你的问题,请参考以下文章

如何获得外部URL喜欢

如何在不使用 fql 的情况下获取帖子 URL 的 Facebook 点赞、分享和评论计数?

从 iOS 在 Facebook 上分享

Facebook 分享帖子,包括 url 下的文字

如何使用 php 从给定的视频 ID 获取 facebook 视频缩略图

Facebook 图形 API 用于获取带有评论数和点赞数的 Facebook 订阅源