Facebook の API を使って、特定の URL の「いいね」が押された数を取得します。GET リクエストを送信することで、XML で返却されるのですがリクエスト先の URL が特殊です。リクエスト先の URL はFQL と呼ばれる、Facebook 専用の問い合わせ言語を使用します。サンプルコードは下記になります。
1 2 3 4 5 6 |
<?php $fql = urlencode('SELECT total_count FROM link_stat WHERE url="http://codaholic.org/?p=54"'); $response = file_get_contents('https://api.facebook.com/method/fql.query?query=' . $fql); $xml = simplexml_load_string($response); print $xml->link_stat->total_count; |
2行目
2 行目の SQL のような文字列が FQL です。文法的には SQL とほぼ同じなので SQL を知っていれば何をしているかはすぐに分かると思います。link_stat テーブルの中で、url フィールドがhttp://codaholic.org/?p=54である total_count フィールドを抜き出すという内容を表しています。つまり、他のURLのいいね数を取得したい場合は、urlの箇所を差し替えるだけです。FQLについては、別途調べて記事を書きたいと思います。
参考:
Facebook Query Language (FQL) – Facebook開発者
http://developers.facebook.com/docs/reference/fql/
FQL を urlencode したものをqueryの値として連結した URL に GET リクエストを送信します。XML で結果が返却されますので、simplexml_load_string でパースします。あとは目的の値にアクセスをします。FQL によって取得したい値を絞り込んでいるので結果は非常にシンプルになっていました。$xml
を var_dump した結果を下記に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
object(SimpleXMLElement)#1 (2) { ["@attributes"]=> array(1) { ["list"]=> string(4) "true" } ["link_stat"]=> object(SimpleXMLElement)#4 (1) { ["total_count"]=> string(2) "57" } } |
[…] [PHP]FacebookのAPIを使って、特定のURLのいいね数を取得する « Codaholic FacebookのAPIを使って、特定のURLの「いいね」が押された数を取得します。 via codaholic.org […]
[…] これも調べたらすぐわかりました。こちらも公式APIになります。まぁ、簡単な例がありましたのでこちらのサイトを参考にしても良いでしょう。[PHP]FacebookのAPIを使って、特定のURLのいいね数を取得する […]