[FaceBook API] ユーザーが許可したパーミションの一覧を取得する方法

このエントリーをはてなブックマークに追加

こんにちは、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エクスプローラをうまく使ってテストしてみてください。

では、また。

[PR] 「結さん」があなたに代わって開発案件の依頼主を探します

  • 「既存のクライアントにギャラアップは言いにくい」
  • 「営業活動する時間がないし、苦手」
  • 「仕事が途切れたらどうしよう」

ITエンジニアのこんな悩みを「結さん」が解決してくれます
結さんへの無料会員登録後は提案メールを待つだけです!

関連記事

このエントリーをはてなブックマークに追加