8月19日からFacebook Graph APIの仕様が変わっていいね数・シェア数が取れなくなっていた

どうもお久しぶりです。

しばらくぶりです。
夏バテになったのか今の今まで体調不良で更新が滞っていましたm(__)m

少しですが、体調戻ってきたので、徐々に更新再開したいと思います。

で、今日なのですが、このブログのFacebooいいね数が取得できなくなっていましたので、
このへんのお話をできたらと思います。

AAスポンサーリンク

graph APIの仕様が変わったらしい

自分のブログ記事見てみると

facebook1

Facebookのいいね数が0になっていました。

私のサイトはFacebook提供のいいねボタンをつかっていません。
ボタンデザインはカスタマイズしていて、いいね数の表示はFacebook提供のgraph APIを使って表示させています。
(段田商会はWordPressのSimplicity2テーマで提供されているの使ってます。)

なので、graph APIを見てみることにしました。

http://graph.facebook.com/https://dandashokai.com/1315

{
    og_object: {
    id: "1119249454785043",
    description: "※2016年6月6日 一部加筆しています。また、わかったことあれば都度加筆していきます。 Instagram APIが2016年6月1日にバージョンが変わり仕様が変更になりました。 下記のサイトを見ると https://gist.github.com/hommaam/c8e2c3e4256971e30507",
    title: "【加筆あり】Instagram APIが6月から仕様変更で申請制になりました。 | 段田商会",
    type: "article",
    updated_time: "2016-08-11T05:41:58+0000"
    },
    share: {
        comment_count: 0,
        share_count: 429
    },
    id: "https://dandashokai.com/1315"
}

以前に比べてレスポンス内容が少し変わっていました。

どうやら2016年8月19日からGraph APIの仕様が変わったぽいですね。

元々はsharesという項目からいいね数を取得できていたのですが、
shareの中のshare_countから取るようになっていました。

このサイトのソースコードは

wp-content/themes/simplicity2/javascript.js

function fetch_facebook_count(url, selector) {
    jQuery.ajax({
      url:'https://graph.facebook.com/',
      dataType:'jsonp',
      timeout: 10000, //10sec
      data:{ id:url }
    }).done(function(res){
      jQuery( selector ).text( res.shares || 0 );
    }).fail(function(){
      jQuery( selector ).html('<span class="fa fa-exclamation"></span>');
    });
}

このようにJSで取得しているのですが、

function fetch_facebook_count(url, selector) {
    jQuery.ajax({
      url:'https://graph.facebook.com/',
      dataType:'jsonp',
      timeout: 10000, //10sec
      data:{ id:url }
    }).done(function(res){
      jQuery( selector ).text( res.share  != null ? res.share.share_count : 0 );
    }).fail(function(){
      jQuery( selector ).html('<span class="fa fa-exclamation"></span>');
    });
}

res.share.share_countと書き換えて

facebook2

いいね数が表示されるようになりました!
めでたしめでたし!

なので取得する際はshareの中のshare_countを指定するようにすれば大丈夫なはずです。

まとめ

説明は以上です。
上記を参考にして頂ければと思います。

今回、ボタンのカスタマイズしている方やGraph API使っていいね数を集計している方は
ハートブレイクショットをやられた感じではないでしょうか(笑)

今回のケースのようにSNSが提供しているAPI系の仕様が変わることは本当多々あります。
この間のInstagramもそうですね!

個人的にはエンジニア殺しな仕様変更は、本当勘弁して欲しいです(迫真)

ザッカーバーグ君、本当やめてくださいよー()

【おまけ】

今回の現象、会社の社長から仕様変更の話聞いて、
この記事書いたんですけど、
公開後、社長のドヤ顔リツイートが酷いので晒しておきます。