Facebook API: best way to get like, share, comment

2019-01-21 07:46发布

问题:

What's the best way to get the like, share, comment count for a post?

I'm trying via FQL but it doesn't seem to give any data when the URL is a FB post URL:

SELECT like_count, comment_count, share_count FROM link_stat WHERE url="https://www.facebook.com/Macklemore/posts/10153256675935268"

When I get the post info via the Graph API Explorer:

386050065267_10153256675935268

It gives me the like count and share count and I can get the comment count via 386050065267_10153256675935268/comments?summary=true

{
  "id": "386050065267_10153256675935268", 
  "from": {
    "category": "Musician/band", 
    "name": "Macklemore", 
    "id": "386050065267"
  }, 
  "message": "We’re playing a FREE show in November to celebrate the new Microsoft Store opening in Jacksonville, Florida. Come see us! Info here: http://msft.it/STJevent\n\nThursday, November 21, 2013\n10:00 p.m.\nStart lining up for your chance to attend the show on Saturday.\nLocation: Outdoors behind Oakley, near Dick’s Sporting Goods.", 
  "actions": [
    {
      "name": "Comment", 
      "link": "https://www.facebook.com/386050065267/posts/10153256675935268"
    }, 
    {
      "name": "Like", 
      "link": "https://www.facebook.com/386050065267/posts/10153256675935268"
    }
  ], 
  "privacy": {
    "value": ""
  }, 
  "type": "status", 
  "status_type": "mobile_status_update", 
  "created_time": "2013-09-26T16:30:23+0000", 
  "updated_time": "2013-09-27T20:39:45+0000", 
  **"shares": {
    "count": 274
  },** 
  "likes": {
    "data": [
      {
        "name": "Jabson Ramos", 
        "id": "100005418486411"
      }, 
      {
        "name": "Sophia Belen Parada Andrades", 
        "id": "100002552653152"
      }, 
      {
        "name": "Oli Barrera", 
        "id": "100001718791443"
      }, 
      {
        "name": "Viktoria Martinez", 
        "id": "1697663024"
      }
    ], 
    **"count": 3345**
  }, 
  "comments": {
    "data": [
      {
        "id": "10153256675935268_43537841", 
        "from": {
          "name": "Vu Thai", 
          "id": "1338690172"
        }, 
        "message": "Sean Viray Matt Win Soo... about my birthday weekend...", 
        "message_tags": [
          {
            "id": "75311036", 
            "name": "Sean Viray", 
            "type": "user", 
            "offset": 0, 
            "length": 10
          }, 
          {
            "id": "25113189", 
            "name": "Matt Win", 
            "type": "user", 
            "offset": 11, 
            "length": 8
          }
        ], 
        "can_remove": false, 
        "created_time": "2013-09-26T16:31:03+0000", 
        "like_count": 4, 
        "user_likes": false
      }, 
      .....
    ], 
    "paging": {
      "cursors": {
        "after": "MjY=", 
        "before": "MQ=="
      }, 
      "next": "https://graph.facebook.com/386050065267_10153256675935268/comments?limit=25&after=MjY="
    }
  }
}

Weird thing is when I run that query in my app I don't get the share count or like count. Am I doing something wrong? Is the data in the explorer different from what apps have access to?

I know I can get the like count via 386050065267_10153256675935268/likes?summary=true

Biggest thing would be the missing share count.

So summary,

Can you get these stats via FQL? If not, how can you obtain the share count via the graph API?

回答1:

POST_ID?fields=likes.summary(true),comments.summary(true),shares

Result:

{
  "shares": {
    "count": 272            //share count
  }, 
  "likes": {
    "data": [

    ], 
    "paging": {

    }, 
    "summary": {
      "total_count": 3453   //like count
    }
  }, 
  "comments": {
    "data": [

    ], 
    "paging": {

    }, 
    "summary": {
      "total_count": 255    //comment count
    }
  }
}


回答2:

You can use facebook graph api like https://graph.facebook.com/?ids=http://mycodingtricks.com and it will return a json code like

{  
    "http://mycodingtricks.com":{  
        "id":"http://mycodingtricks.com",
        "shares":1
    }
}

I have developed my own php script on which you can all social count using that api. http://mycodingtricks.com/share/social.php?url=YOUR-URL-HERE and it will return data like:

{  
    "facebook":[  
        {  
            "share_count":1,
            "like_count":0,
            "comment_count":0,
            "total_count":1,
            "click_count":0,
            "comments_fbid":567687199998199,
            "commentsbox_count":0
        }
    ],
    "googleplus":10,
    "twitter":3,
    "buffer":0,
    "pinterest":0,
    "stumblupon":1,
    "reddit":"<html><body><h1>403 Forbidden<\/h1>\nRequest forbidden by administrative rules.\n<\/body><\/html>\n",
    "linkedin":0
}

But if you wants to use on your own Here is a complete article about how to count facebook share,like and all. http://mycodingtricks.com/php/2-ways-to-count-facebook-likes-shares-and-comments-using-php/



回答3:

FQL is now depreciated. Here's how to do it using the 2.x API:

get /1000076132681/posts?limit=3&fields=object_id,likes.summary(true),comments.summary(true)

This results in the xml, for example:

"summary": {
   "total_count": 80
 }

And in case you need the larger-size picture url as well, check out

?fields=full_picture,attachments