2014-07-22 5 views
2

J'ai un graphique facebook demande api qui ramène cette réponseComment analyser un graphique facebook réponse api

Facebook\GraphObject Object 
(
    [backingData:protected] => Array 
     (
      [data] => Array 
        (
         [0] => stdClass Object 
          (
           [id] => 111 
           [from] => stdClass Object 
            (
             [id] => 111 
             [name] => fo bar 
            ) 

           [name] => etc 

          ) 

J'ai essayé de faire $reponse->{'backingData:protected'} mais il ne fonctionne pas.

De plus, l'ensemble de résultats suivant est un lien vers l'API graphique, mais les résultats sont purs.

[paging] => stdClass Object 
     (
      [cursors] => stdClass Object 
       (
        [after] => MTI3NzMzMTQwMzYy 
        [before] => MTAxNTQzNjI5NTY1NDAzNjM= 
       ) 

      [next] => https://graph.facebook.com/v2.0/111/albums?access_token=xxxxv&limit=25&after=yyy 
     ) 

Mon code

$user_profile = (new FacebookRequest(
     $session, 'GET', '/me/albums' 
    ))->execute()->getGraphObject(); 

    echo '<pre>'; print_r($user_profile); echo '</pre>'; 
+0

'$ response-> data [0] -> id' Je pense que – WizKid

+0

pouvez-vous poster le code php ici? – bhushya

+0

Non je reçois 'Impossible d'utiliser l'objet de type Facebook \ GraphObject en tant que tableau' – user9418

Répondre

4

https://developers.facebook.com/docs/php/GraphObject/4.0.0

getProperty

getProperty (string $name, string $type = 'Facebook\GraphObject') Obtient la valeur d'une clé nommée pour cet objet graphique. Si la valeur est un scalaire (chaîne, nombre, etc.), elle sera retournée. S'il s'agit d'un tableau associatif, il sera renvoyé en tant que cast GraphObject au type de sous-classe approprié s'il est fourni.

$user_profile = (new FacebookRequest(
     $session, 'GET', '/me/albums' 
    ))->execute()->getGraphObject(); 

$id = $user_profile->getProperty('id'); 

liste complète des champs dans https://developers.facebook.com/docs/graph-api/reference/v2.0/album

+2

La fonction getProperty ne capture pas tous les cas d'utilisation. Par exemple, l'autorisation/me/retourne des données extrêmement moche (pas de surprise là-bas) qui ne peuvent pas être analysées avec getProperty ou au moins je ne pouvais pas trouver une solution sur Internet qui l'utilisait. Cependant, la réponse de Bhushya est la voie à suivre. Facebook est tellement stupide qu'il m'a retourné un objet graphique contenant un tableau contenant un objet graphique pour une seule entrée de données. Et coder en dur quelque chose comme les données [0] est complètement inacceptable pour moi en tant que programmeur. De plus, Facebook change beaucoup de choses et le cache dans leur changelog caché sur le site de développement. dtf – khuderm

17

Voici le chemin:

 $user_profile = (new FacebookRequest(
     $session, 'GET', '/me/albums' 
     ))->execute()->getGraphObject(); 
     $album = $user_profile->getProperty('data'); 

     $album_data = $album->asArray();//this will do all job for you.. 
     foreach($album_data as $row){ 
      var_dump($row); 
     } 
+0

Merci, mais cela ne fournit aucune sortie dans le foreach, j'ai ajouté la sortie de tableau dans votre message ci-dessus. Mais quand vous essayez et itérez, rien n'est généré. – user9418

+0

quelle erreur vous avez ehrn vous avez imprimé '$ user_profile-> getProperty ('données') [0]' – bhushya

+0

'[2014-07-22 22:33:41] production.ERROR: exception 'Symfony \ Component \ Debug \ Exception \ FatalErrorException 'avec message' Impossible d'utiliser l'objet de type Facebook \ GraphObject en tant que tableau 'dans/var/www/app/controllers/FacebookController.php: 52 Trace de la pile: # 0 [fonction interne]: Illuminate \ Exception \ Händler-> handleShutdown() # 1 {main} [] [] ' La sortie sans [0] est https: // gist.github.com/anonymous/8e345f124f7efcd076b5 – user9418

5

Pour la nouvelle version graphique API v2.5 de Facebook Lire lire les données comme ci-dessous:

$fb = new \Facebook\Facebook([ 
     'app_id' => 'KEY HERE', 
     'app_secret' => 'SECRET HERE', 
     'default_graph_version' => 'v2.5', 
    ]); 
$asscee_t ="ACCESS TOKEN HERE"; 
    $response = $fb->get('/me/friends', $asscee_t); 
     $get_data = $response->getDecodedBody(); // for Array resonse 
     //$get_data = $response->getDecodedBody(); // For Json format result only 
     echo $get_data['summary']['total_count']; die; // Get total number of Friends 
+0

Celui-ci a travaillé pour moi Merci. –