Facebookのいいね・シェア数が表示されなくなったので修正しました!

先日から記事のFacebookのいいね数(シェア数)の自作ボタンの数が表示されなくなっていることに気がつきました。最初は一時的なサーバーの問題かと思ったのですが、数日経っても表示されないので調べてみたらなんとFacebook Graph API v2.8が2019年4月18日までだったようです。それに伴いこのAPIのバージョンを使っているブログではシェア数などが表示されなくなりました。
Facebook Graph API v2.9以降ではアクセストークンを取得しないと、シェア数の取得ができなくなっているため、今までより少し面倒になっています。というわけで、今回は最新のFacebookでのブログの記事のシェア数の取得方法について書きたいと思います。
Facebook for Developersに登録してシェア数を取得しよう!

Facebook for Developersのサイトにアクセスします。
Facebook for Developers
右上のスタートガイドを押して、「次へ」を押します。すでにFacebookアカウントを持っていればそれを使ってFacebook for Developersに登録できます。

アプリ名とメールアドレスを入力して「次へ」を押します。

「自分に一番当てはまる役割は?」と聞かれるので今回の場合は「開発者」を選択します。

「Add Your First Product」を押します。

「製品を追加」から「Facebookログイン」を選びます。

。アプリのプラットフォームを聞かれるので「ウェブ」を選択します。

ウェブサイトのURLを聞かれるので、自分のサイトのURLを入力して「Save」を押します。この後ステップ5までありますが、適当に読んで飛ばしてもOKです。

左にある「プロダクト」→「Facebookログイン」→「設定」を開きます。「有効なOAuthリダイレクトURI」に自分のサイトのURLを指定して「設定を保存」を押します。

左上にある「設定」→「ベーシック」を開きます。「アプリドメイン」「プライバシーポリシーのURL」を指定します。カテゴリは適当に「エンターテイメント」にして「設定を保存」を押します。

右上にある「ステータス:開発中」の隣りにある「オフ」を押してアプリを公開状態にします。

下記URLの{アプリID}と{自分のサイトのURL}を書き換えて、ブラウザでアクセスすると上記のような表示になるのでログインします。
https://www.facebook.com/dialog/oauth?client_id={アプリID}&redirect_uri={自分のサイトのURL}
続いてアクセストークンを取得するためのURLにアクセスします。{アプリID}、{app_secret}は手順10のページで確認できます。
https://graph.facebook.com/oauth/access_token?client_id={アプリID}&client_secret={app_secret}&grant_type=client_credentials
正しくアクセスできれば下記のようなjsonが返ってくるのでaccess_tokenをメモしておきます。このアクセストークンはシェア数を取得する際に使います。
{"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"bearer"}
シェア数の取得
あとは取得したアクセストークンを使って、上記のようなURLで記事のシェア数を取得してきます。
https://graph.facebook.com/?id={シェア数を取得したい記事のURL}&fields=og_object{engagement},engagement&access_token={アクセストークン}
正常に取得できれば下のようなjsonが返ってきます。
{
"og_object": {
"engagement": {
"count": 128,
"social_sentence": "128 people like this."
},
"id": "118816328283759"
},
"engagement": {
"reaction_count": 63,
"comment_count": 42,
"share_count": 23,
"comment_plugin_count": 0
},
"id": "http://shopdd.jp/blog-entry-1120.html"
}
以前のFacebook Graph API v2.8の時のjson形式から少し変更されているようです。なので既存のjavascriptコードを適宜を書き換えてください。
今回の個人的感想
今回はFacebookのシェア数を取得するためのFacebook Graph APIの記事でした。私と同じようにFacebookのシェア数ボタンを自作している人は同じような影響を受けている可能性が高いですね。以前まではこんな面倒な手順を踏まなくても簡単に取得できていたのですが、Facebook Graph API v2.9以降では結構手間がかかりましたね。今までは誰でも値を取得できていたのですが、登録とOAuthでサイトを認証してアクセストークンの取得が必要となったのでだいぶ大きな変更です。とりあえずこれで今までどおりにシェア数が表示できるようになったので良かったです。
面倒とは言え、Facebookのシェア数だけ表示されてないのはおかしいので、今回もしっかり変更に対応しました。ついでに先日終了したGoogle+へのソーシャルリンクを外して、SNSボタンのデザインも変更しました。なにげにこのデザインテンプレートを作ってから5年近く経っているので、所々古いと感じる部分もあったりしていますが、こういう機会がないと変えていかないので良かったかもしれません。今までと比べてかなりスッキリした感じになりました。記事を共有したいときなどにぜひ活用してください。