Проверьте наличие определенного разрешения пользователя Facebook с помощью переполнения стека

У меня есть следующий код для получения разрешений пользователей Facebook:

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

Я могу печатать:

echo print_r( $graphObject, 1 );

чтобы получить распечатку всех разрешений, НО я хочу проверить, было ли предоставлено конкретное разрешение (в моем случае «publish_actions») и действовать в соответствии с ним. Как извлечь этот элемент объекта для выполнения теста «если» в PHP?

0

Решение

Получить сырой ответ и использовать 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;
}
}
-1

Другие решения

Используя 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.
}
}
0

По вопросам рекламы [email protected]