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に対して応答していない理由に関する手がかりはありますか?
UPDATE:このソリューションは無効になりました。 FQLは2016年8月7日以降廃止されます。
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コールを作成し、「エンゲージメント」フィールドを選択できます。以下は、グラフエクスプローラーからの例へのリンクです。
Update 10/2017(v2.10):
これは、指定されたURLのいいね!と共有カウントを取得する非推奨の方法です(アクセストークンは不要です)。
結果:
{
"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
オープングラフ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"
}
以前の回答はすべて非推奨になりました。このメソッドは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 を使用して、これをテストし、アクセストークンを取得できます。
Facebook Graphは素晴らしいです。以下のようなことをしてください。 Perl.org URLを入力しました。任意のURLをそこに配置できます。
最新の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/
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];
グラフ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 で答えを見つけました
以下の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>
あなたの質問はかなり古く、Facebookは現在FQLを減価していますが、このユーティリティ Facebook Analytics を使用して、必要なことを実行できます。ただし、好みやコメントをしているユーザーの詳細が必要な場合は、取得に時間がかかることがわかります。これは、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"
}
]
}
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の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"
}
}