Вот простая функция (измененная из класса, который я написал для упрощения вызовов API Facebook), чтобы проверить, есть ли несоответствия между областью действия приложения Facebook и разрешениями, предоставленными пользователем.
function checkPermissions($scope, $facebook)
{
// Break the scope into an array
$scope = array_map('trim', explode(",", $scope));
// Get the users permissions from Facebook and put them in an array
$getUserPerms = $facebook->api('/me/permissions');
$userPerms = array_keys($getUserPerms['data'][0]);
// Permissions not granted is the difference between these arrys
$ungrantedPerms = array_diff($scope, $userPerms);
if ( ! empty($ungrantedPerms)) {
// authenticate user again
}
}
Is предполагает, что область видимости отформатирована следующим образом:
$scope = 'email, user_about_me, user_likes, manage_pages, publish_stream';