Site icon Tips Note by TAM

Facebookのパーミッションチェック方法

facebookアプリのを初めて使う時に表示されるパーミッション。
機能ごとに必要なパーミッションを分けたり、後から追加したりする時のチェック方法です。

パーミッションチェックの関数

function checkScope($uid, $scope){
    $_ispermit = true;

    $access_token = $this->facebook->getAccessToken();

    try {
    $fql = 'SELECT '.$scope .' FROM permissions WHERE uid ="'.$uid .'"';
    $scopes = $this->facebook->api(array(
        'method' => 'fql.query',
        'access_token' => $access_token,
        'query' => $fql
    ));
    foreach($scopes[0] as $k=>$v) {
        if($v === '0') {
            $_ispermit = false;
        }
    }

    } catch (FacebookApiException $e) {
        // エラー処理
        $this->isError;
        exit;
    }
    return $_ispermit;
}

使い方

$scope = 'publish_stream,read_stream';  // パーミッション定義
$uid = $this->facebook->getUser();    // facebookID取得

$reslut = checkScope($uid, $scope);
if (!$reslut) {
    $redirectUrl = $this->facebook->getLoginUrl(array(
    'fbconnect' => 0,
    'canvas' => 1,
    'scope' => $scope,
    'redirect_uri' => $url,      // パーミッション取得後の戻り先URL
    ));
    echo "<script type='text/javascript'>top.location.href = '".$redirectUrl."';</script>";
}

参考
http://www.masteringapi.com/tutorials/how-to-check-if-user-has-certian-permission-facebook-api/22/