【问题标题】:How to query the like count of a facebook object such as a album or photo via fql?如何通过fql查询相册或照片等facebook对象的点赞数?
【发布时间】:2010-06-15 04:34:05
【问题描述】:

这是一个棘手的问题,您如何获得 Facebook 对象(例如相册或照片)的点赞数?我知道 facebook 有一个名为 link_stat 的 fql 表,它允许您获取外部 url 的类似计数,但如果对象在 facebook 内,它似乎不起作用。如果您通过特定对象上的 opengraph api 访问喜欢,它最多只会返回 4 个喜欢该对象的用户,即使可能有几千个用户喜欢它。有什么线索吗?

【问题讨论】:

  • 它不起作用,我已经按照说明尝试过。 facebook 似乎不愿意公开分享这些数据。
  • 发布您尝试过的代码,因为它对我来说很好。

标签: facebook facebook-fql facebook-opengraph


【解决方案1】:

我可以通过更改隐私设置来做到这一点。如果您查询表中的 XYZ 用户之类的用户,除非用户已将“可见性”设置为朋友(照片、相册、视频、链接或便笺),否则无论您是否请求权限,它都不会返回数据(从您的应用程序中)。

例如,我是 XYZ 用户,我喜欢我的 GHI 发布的某个链接。我使用为 Facebook 开发的应用程序并允许访问我的链接。现在,如果应用程序尝试访问我在 Facebook 上喜欢的链接,则应用程序将无法获取 GHI 发布的链接(我喜欢的),除非 GHI 已将他的链接设置为“朋友”的可见性。

如果有人在这方面需要更多帮助,请返回此论坛。

问候, 哈龙

【讨论】:

  • haroon,用户需要登录应用才能获得点赞数吗?我的意思是需要 oauth?
【解决方案2】:

http://developers.facebook.com/docs/reference/fql/like

您可以使用fql query 根据 object_id 检索喜欢的列表,然后进行计数。

【讨论】:

    【解决方案3】:
    # fql query
       $fql = "SELECT like_info FROM photo WHERE object_id=" . $photo_id;
    
       # api request
       $request = array(
        'method' => 'fql.query', 'query' => $fql
       );
    
      # run batch request
      $likeInfo = $facebook->api(array(
        'method' => 'fql.query', 'query' => $fql
      ));
    
      var_dump($likeInfo);die;
    => get like info of photo`enter code here`
    

    【讨论】:

      【解决方案4】:

      显然,自从您第一次提出问题以来,答案已经发生了很大变化,但这是今天的答案。使用 Facebook Graph API 找出如何从 Facebook 获取相册中每张照片的信息:

      https://graph.facebook.com/albumID/photos?fields=id,likes.summary(true),comments.summary(true)&after=XXXXXX&access_token=XXXXXX
      

      使用 Ajax 发送 GET 请求:

      $.ajax({
          dataType: "json",
          method: "GET",
          url: "https://graph.facebook.com/" + albumID + "/photos",
          data: {fields: "id,likes.summary(true),comments.summary(true)",
              limit: 100,
              after: afterStr,
              access_token: token})
      

      变量'afterStr'是下一页数据的ID。

      那么下面来统计我们从 Facebook 得到的点赞和赞数:

      var dArr = msg.data;
      var i = 0;
      for (i = 0; i < dArr.length; i++) {
          like += dArr[i].likes.summary.total_count;
          comment += dArr[i].comments.summary.total_count;
      }
      

      使用 ID 将结果发布到您的 HTML 中:

      $("#likeID").html(like);
      $("#commentID").html(comment);
      

      工作demo here

      希望这会有所帮助!

      【讨论】:

        【解决方案5】:

        如今,如果您知道要查询的帖子类型,则可以使用 FQL。例如,如果您想知道一张照片有多少赞,您可以使用:

        SELECT like_info FROM photo WHERE object_id = 414122065292107
        

        返回以下内容:

        {
          "data": [
            {
              "like_info": {
                "can_like": true, 
                "like_count": 1354, 
                "user_likes": false
              }
            }
          ]
        }
        

        对于不同类型的内容存在类似的方法,但对我来说似乎不一致,因此请查看 FQL 文档。

        https://developers.facebook.com/docs/reference/fql/

        【讨论】:

          猜你喜欢
          • 2011-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多