web-dev-qa-db-ja.com

特定のURLのFacebookのLike / Shareカウントを取得する

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-sunset-kayaking-hot-chowder'&format=json

2番目のページには明らかに共有カウントがあり、ページのHTMLを調べると、共有に使用されているURLが上記のAPIリクエストに配置されたURLです。ただし、このAPIは、いいね!またはシェアの数のカウント情報で応答しません。

APIが一部のURLに対して応答しているが他のURLに対して応答していない理由に関する手がかりはありますか?

56
Vijay Boyapati

UPDATE:このソリューションは無効になりました。 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では、IDがURLであるグラフAPIコールを作成し、「エンゲージメント」フィールドを選択できます。以下は、グラフエクスプローラーからの例へのリンクです。

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

47
Rajesh Namase

2016年8月8日現在、FQLは非推奨です。


Update 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

42
budi

オープングラフAPIを使用します。 「Coca Cola」のいいねの数を照会するライブの例を次に示します。

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"
}
17
John Culviner

以前の回答はすべて非推奨になりました。このメソッドは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」フィールドを取得します。


Graph API Explorer を使用して、これをテストし、アクセストークンを取得できます。

11
jetlej

Facebook Graphは素晴らしいです。以下のようなことをしてください。 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

7
Chankey Pathak

最新の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

ドキュメント

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/

7
vincentlcy

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];
4
Atif Tariq

グラフAPI v2.1では、1回の呼び出しのみでlikeカウントを取得できるため、ページングを実行する必要はありません。

たとえば、 http://www.imdb.com のいいねの数を取得するには

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

Graph API Explorer https://developers.facebook.com/tools/Explorer/?method=GET&path=414652589771%2Flikes%3Fsummary%3D1&version=v2.1

それは何らかの形で文書化されていません(少なくともこの回答を提出した時点では...)。 https://stackoverflow.com/a/18198957/1822624 で答えを見つけました

3
Edward Fung

以下のURLを使用し、myurlを投稿のURLに置き換えると、すべてのものが取得されます

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>
2
varun

あなたの質問はかなり古く、Facebookは現在FQLを減価していますが、このユーティリティ Facebook Analytics を使用して、必要なことを実行できます。ただし、好みやコメントをしているユーザーの詳細が必要な場合は、取得に時間がかかることがわかります。これは、Facebookは一度に非常に小さなデータチャンクのみを提供し、すべてを取得するには多くのページングが必要だからです。

1
Loïc Joachim

拡張アクセス許可「read_stream」が必要な場合は、Facebook APIエンドポイントを呼び出して、likes,sharesfieldsに追加する必要があります。

この呼び出し

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"
    }
   ]
}
1
Abood Sy

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;
}

ここにサンプルコードがあります。ここに正しい形式のコードを貼り付ける方法がわからないので、コードをよく見るためにこのリンクにアクセスしてください。

カウンターのようなカスタムFacebookの作成

1
reylimjr

FacebookのOpen Graphオブジェクト、つまり「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"
  }
}
0
blueskin