ソーシャルボタンを自作に変更 の所でソーシャルボタンをJavaScriptを使って取ってくる様なのを 自分で書くようにしてるのですが、Facebookのカウント数取得が このままだと上手くいかないこともあるようなので改善。
これまでのFacebookのカウント数取得数
追記: 2016/08/22
API仕様が変更されたので現在は取り方がちょっと下の物と違っています。
上のポスト参照。
(shares
share.share_count
)
追記ここまで
ソーシャルボタンを自作に変更 の所でやったように、数は
http://graph.facebook.com/?id=<URL>
というURLを叩くと
{
"id": "<URL>",
"shares": 37
}
みたいな物が帰ってくるのでこのshares
の数を取ってくれば良い、とうことでした。
e.g.)
http://graph.facebook.com/?id=http://rcmdnk.github.io/blog/2014/02/19/computer-markdown/
具体的には
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
jQueryのAjaxを使ってこんな感じです。
ページにfacebookCount
というクラスを持った要素を作っておいて
その中の値を書き換えています。
改善したもの
JavaScript - Google+1のシェア数をクライアントサイドだけで取得 & Facebookのシェア数の取得に関する特殊な事情 & ちょっと宣伝 - Qiita
というのを見つけて、どうやらshares
という物が必ず帰ってくるわけではなく、
likes
という値を持ったJSONを返してくることもあるとのこと。
ただし、このlikes
はshares
と同じ数ではなく、
さらに別の方法で取ってきたtotal_count
と合わせた数が
上のshares
と同じ最終的なトータルの数になる、ということでした。
このtotal_count
はFacebook Query Language (FQL)を使って取ってこれて、
https://graph.facebook.com/fql?q=SELECT total_count FROM link_stat WHERE url='<URL>'
みたいな形のURLを叩くと取ってこれます。
このままだとアドレスバーに入れてもダメですが、エンコードして
http://graph.facebook.com/fql?q=SELECT%20total_count%20FROM%20link_stat%20WHERE%20url='<URL>'
こんな感じにすれば好きなURLのtotal_count
がブラウザでも見れます。
e.g.)
これが返すJSONは
{
"data": [
{
"total_count": 37
}
]
}
な感じです。(data
の値が一度配列になってその中にハッシュがあるのでちょっと注意。)
ということで、上のコードをこんな感じで直してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
こんな感じで最初に//graph.facebook.com/
を使って取ってきた後、
likes
があれば更にtotal_count
も取りに行って
合計を足す、みたいなことをやっています。
そうでない時はshares
の値を探してそれも無い場合は0を入れます。
まあ、そもそもFacebookでシェアされる事がかなり少ないし
ちょっと数がある所で見てもlikes
になってるところは
無かったのでこのブログでは多分意味無いですが
やってみた、ということで。