Facebook PHP SDK:检查用户是否已授予特定权限集

Facebook PHP SDK:检查用户是否已授予特定权限集,php,facebook,laravel-5,facebook-php-sdk,Php,Facebook,Laravel 5,Facebook Php Sdk,我想检查用户是否已授权以下权限“管理页面”、“发布页面”、“阅读见解”,用于我的应用程序。简而言之,如果他们拒绝一个或多个权限,我需要知道,因为所有这些都是必需的 这是我获取用户访问令牌后的回调方法。我如何验证他们是否批准了所有权限请求 注意:我正在使用SammyK Laravel Facebook SDK包 public function handleFacebookCallback() { try { $token = Facebook::ge

我想检查用户是否已授权以下权限“管理页面”、“发布页面”、“阅读见解”,用于我的应用程序。简而言之,如果他们拒绝一个或多个权限,我需要知道,因为所有这些都是必需的

这是我获取用户访问令牌后的回调方法。我如何验证他们是否批准了所有权限请求

注意:我正在使用SammyK Laravel Facebook SDK包

public function handleFacebookCallback()
    {
        try {
            $token = Facebook::getAccessTokenFromRedirect();

            $user = Facebook::get('/me?fields=permissions', $token)->getGraphUser();
            $permissions = $user['permissions']->asArray();

            // permissions: 'manage_pages', 'publish_pages', 'read_insights'

            if (array_key_exists('publish_pages', $permissions['data'][0]))
            {
                // permissions exist, proceed
            }
            else 
            {
                // user denied permission(s), redirect
            }
        }
        ....

不确定这是否是最巧妙的答案,也不确定其他人会如何处理这个问题,但以下是我的想法

try {
    $token = Facebook::getAccessTokenFromRedirect();

    $request = Facebook::get('/me?fields=permissions', $token);
    $user = $request->getGraphUser();
    $permissions = $user['permissions'];

    // if user denied ANY of the required permissions
    foreach ($permissions as $p => $permission) 
    {
        if ($permission['status'] !== 'granted')
        {
            return redirect()->route('connect.index')->withErrors('Error: We require all permissions in order to connect your Facebook page.');
        }
    }
} 
根据,您可以调用以获取用户授予应用程序的所有权限

$request = new FacebookRequest(
  $session,
  'GET',
  '/me/permissions'
);

$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */

foreach($graphObject as $permission) {
        if($permission->permission == 'publish_pages' AND $permission->status == 'granted') {
            // User has granted publish_pages permission
    }
}
你可以调试这个调用,我还没有测试过,但应该可以