使用PHP检查特定的Facebook用户权限


Check for a particular Facebook user permission using PHP

我有以下代码来获得用户的Facebook权限:

$request = new FacebookRequest( $session, 'GET', '/me/permissions' );
$response = $request->execute();
$graphObject = $response->getGraphObject()->asArray();

我可以键入:

echo print_r( $graphObject, 1 );

打印出所有权限,但我想检查是否授予了特定权限(在我的情况下是"publish_actions")并采取行动。我如何提取对象的此元素以在PHP中执行"if"测试?

使用facebook-php-sdk-v4-5.0.0,您可以通过以下方式进行检查:

$fb = new Facebook'Facebook([
  'app_id'                  =>      $app_id,
  'app_secret'              =>      $app_secret,
  'default_graph_version'   =>      'v2.2',
  ]);
// Getting declined and granted permissions. 
$permissions            =   $fb->get('/me/permissions',$access_token);
$permissions            =   $permissions->getGraphEdge()->asArray();
// Permissions array sample format (For me, only asked for publish_actions
[0] => Array([permission] => public_profile [status] => granted )
[1] => Array([permission] => publish_actions[status] => declined)
foreach($permissions as $key)
{
    if($key['status'] == 'declined')
    {
        // One permission is not granted.
        // Do something. Redirect with an error message.
    }
}

获取原始响应并使用json_decode

  $publish_actions_perm = '';
    $array = json_decode($response->getRawResponse(), true);
    foreach($array['data'] as $perm){
        if($perm['permission']=='publish_actions'){
            $publish_actions_perm = $perm['status']; //granted
            break;
        }
    }