こんにちは、fujinyoです。
FaceBookアプリをユーザーに使ってもらうためには、インストールの際にパーミッションの許可をしてもらう必要があります。
全てのパーミッションを許可してもらえればいいのですが、パーミッションの許可はユーザーの任意の為、
これはイイけど、これは許可できない。なんて事になるとアプリが正常に動作しない場合があります。
また、インストール時には全ての許可をしてもらっていましたが
その後、アプリ設定ページからアプリ毎のパーミッションの許可をユーザーが自由に変更する事ができてしまいます。
ユーザーの投稿を取得するアプリなのに、いつのまにか「read_stream」パーミッションが削除されていたりすると大変困ります。
ユーザーがパーミッション設定を変更したかどうかをチェックしておく必要があります。
その為には、FaceBook APIを利用してユーザーの許可しているパーミッション一覧を取得しましょう。
require_once('facebook.php'); $facebook = new Facebook(array( 'appId' => あなたのアプリのID, 'secret' => あなたのアプリの秘訣, 'cookie' => true ));
ここまでは、今までどおりAPIを使う準備ですね。
try { //パーミッション一覧の取得 $result = $facebook->api("/me/permissions", "get", array("access_token" => アクセストークン) )); } catch(FacebookApiException $e) { //エラー処理がうんたらかんたら }
/me の部分は /ユーザーID でも構いません。
これで$resultにパーミッションの一覧が取得できます。
取得結果は、以下のような配列で返ってきます。
{ "data": [ { "installed": 1, "read_stream": 1, "status_update": 1, "photo_upload": 1, "video_upload": 1, "create_note": 1, "share_item": 1, "publish_stream": 1, "manage_pages": 1, "publish_actions": 1, "user_about_me": 1 } ] }
許可されているのパーミッションの値が 1 になっています。
ただ、許可されていないものは 0 になるのではなく配列要素ごと削除されるようです。
返ってきた配列内に、許可すべきパーミッションが全て含まれているかをチェックすればOKですね。
さて、そのチェックはどのタイミングで行いましょうか?
妥当なのは、アプリの初期インストール時、ログイン時で十分だと思います。
必要な場合は、アプリ内のページアクセス毎に毎回してもいいですが処理が重くなります、あまり有効ではないですね。
パーミッションを削除した際の動き等は、Graph APIエクスプローラをうまく使ってテストしてみてください。
では、また。