公式PHP SDKのGraph API問い合わせ部分の実装にappsecret_proofというパラメータが足され、アプリの設定画面からその利用・不利用設定ができるものの、仕様についてはどのドキュメントにも足されていないということを、以下のエントリで紹介してきました。
そこで、「Documentation for appsecret_proof parameter is missing(appsecret_proofパラメータのドキュメントが不足している)」というバグ報告をしていたのですが、ついに公式ドキュメントが追加され、公式ブログで周知されました。(バグ報告の方法については「ドキュメントの歩き方:FQL編」を参照)
そこで、「Documentation for appsecret_proof parameter is missing(appsecret_proofパラメータのドキュメントが不足している)」というバグ報告をしていたのですが、ついに公式ドキュメントが追加され、公式ブログで周知されました。(バグ報告の方法については「ドキュメントの歩き方:FQL編」を参照)
公式ブログとドキュメントにはキャプチャやサンプルコードがあり、それらを見るだけで利用方法は分かるので、以下にざっくり全体像を紹介します。
概要
サーバサイドでGraph APIを利用する際のセキュリティ向上のため、API呼び出し時にappsecret_proofパラメータを足すことを必須にする。appsecret_proofパラメータの生成方法は後述。クライアントサイドからの利用時(connect-js)は不要。アプリの設定
アプリの管理画面から、App Dashboard > Setting > Advanced > Securityと辿って行くと、Require AppSecret Proof for Server API callsという項目が見つかります。ここでEnabledを選択すれば、appsecret_proof無しでのAPI呼び出しができなくなります。実装
あとは、リクエスト時にappsecret_proofパラメータを足してあげるだけ。$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
curl \
-F 'access_token=<access_token>' \
-F 'appsecret_proof=<app secret proof>' \
-F 'batch=[{"method":"GET", "relative_url":"me"},{"method":"GET", "relative_url":"me/friends?limit=50"}]' \
https://graph.facebook.com