Facebook Like-Brownie / andreasivarsson
普段あまり直接facebookの【いいね】の数を個別に取得するって事を意識してなかったので…何となく調べたのでメモです。Graph APIってなんだ?FQLってなんだ?なにが違うんだと。超ざっくり確認です。なお、今回の対象は特定の記事に対するいいね数を取得するってところでございます。
事の発端
こちらの記事で見かけた以下の内容
このブログのある箇所では、記事一つ一つに対して、
Facebookでの「いいね!」「シェア」「コメント」数を、プレーンテキストで取得しています。
それでですが・・・去年の末あたりから(12/27,28あたりかな、厳密にはわかっていません)
以降に公開した記事に対しては、「graph api」を使用しても取得できなくなっていました。
そうなの?じゃこれからはFQLの時代?と思った次第です。なお、この記事を書いている時点(2013/02/07)では、参照元記事のようなことはなく、Graph APIでもいいね数(というかshares数?)は取得出来てました。
ひとまず実践!まずはGraph APIから
我らが愛しのApple様のURLにてまずはGraph APIを試してみました。
http://graph.facebook.com/http://www.apple.com/
このURLをブラウザからたたいた結果がこちら。
{ "id": "http://www.apple.com/", "shares": 102927, "comments": 7 }
サイトにいいねボタンもないのにさすがの10万越え。こんな感じの結果が取得できます。sharesとひとくくりにされておりますが、いいね数とシェア数とコメント数の合算値だと思っておりますが、ちょっとそこまで深くは追いませんでした(すません)。
お次はFQLをPHPから
ようはSQLライクなやり方でfacebookのGraph APIのデータをさらに取得できるってことでしょうかね?
今回は特定の記事の状態(情報)が欲しいので、link_statというテーブルを利用するみたいです。詳しいテーブル情報はfacebbok developersにて。
こんな具合なFQL(とてもSQLとにておる)を用意して、
SELECT url, normalized_url, share_count, like_count, comment_count, total_count, commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url="取得したい記事のURL" |
そしてfacebookが用意している以下のAPIのURL
https://api.facebook.com/method/fql.query?
に、先程のFQL構文をパラメータとして渡してやると、結果が取得できました。FQL構文はURLエンコードしておくとよろしいです。
https://api.facebook.com/method/fql.query?query=select%20total_count%2Clike_count%2Ccomment_count%2Cshare_count%2Cclick_count%20from%20link_stat%20where%20url%3D%27http%253A%252F%252Fwww.apple.com%252F%27
すると以下の情報をxmlで取得できました。
<fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"> <link_stat> <total_count>102927</total_count> <like_count>54156</like_count> <comment_count>30359</comment_count> <share_count>18412</share_count> <click_count>0</click_count> </link_stat> </fql_query_response> |
ふむ!FQLを使うと、Graph APIでは取得できなかった細かな数が取得できるのですね!例えば【いいね】数だけ、とか【シェア】数だけ、とか。という使い分けが出来るようです!
この方法だと結果をxmlで出力しておりますが、jsonで取得する可能でした。cURLで取得してちょちょっといじるっていうのも手軽ですね。
あとがき
ご存じの方には当然のお話だと思いますが、過去に個人的に試してみたときのやり方がlinks.getStatsのままだったので、これですっきりしました。なお、links.getStatsは今後は非推奨とのことです。
Please note: We are in the process of deprecating the REST API. Please use the Graph API and access using the Insights object
