2010-11-30 6 views
4

Je suis en train d'obtenir les noms de mes amis à l'aide API FB Graph avec cet appel:Facebook Graph API: Parsing la sortie

$friends = file_get_contents('https://graph.facebook.com/me/friendsaccess_token='.$session["access_token"]); 

echo "Friends : $friends\n"; 

Cela me donne une liste de la forme:

{"data":[{"name":"ABC XYZ","id":"12212839"},{"name":"PQR GHI","id":"5004678"}]} 

Je veux être en mesure de stocker uniquement les noms dans un tableau. Comment utiliser $ friends pour obtenir les noms? Quelque chose comme $ friends ['name'] ne semble pas fonctionner.

Aidez-nous s'il vous plaît. Merci.

Répondre

5
$friends = json_decode($friends); 
foreach($friends['data'] as $friend) 
{ 
    echo $friend['name']; 
} 

Le retour est un objet json, vous devez le décoder. Bien que je vous conseille vivement d'utiliser un SDK tel que http://github.com/facebook/php-sdk/

Si cela ne fonctionne pas essayer:

$friends = json_decode($friends); 
foreach($friends->data as $friend) 
{ 
    echo $friend->name; 
} 
+0

J'ai essayé de faire ceci, cela retourne une chaîne vide..toutes les suggestions? – user379151

+1

C'est l'erreur retournée: Erreur fatale: Impossible d'utiliser l'objet de type stdClass en tant que tableau – user379151

0

Voici ce que je l'ai fait pour obtenir les informations de messages .. brut mais il fonctionne. Notez que les partages aiment les commentaires et les réactions sont d'un niveau plus profond dans l'objet JSON

$posts = json_decode($output); // from FB Graph v2.8 API call 
foreach($posts->data as $post) 
{ 
    echo "MESSAGE: ", $post->message, "<br>"; 
    echo "NAME: ", $post->name, "<br>"; 
    echo "TYPE: ", $post->type, "<br>"; 
    echo "ID: ", $post->id, "<br>"; 
    echo "LINK: ", $post->link, "<br>"; 
    echo "PERMALINK: ", $post->permalink_url, "<br>"; 
    echo "CREATED: ", $post->created_time, "<br>"; 
    if($post->shares->count == "") { $shares = "0"; } else { $shares = $post->shares->count; } 
    echo "SHARES: ", $shares, "<br>"; 
    if($post->reactions->summary->total_count == "") { $reactions = "0"; } else { $reactions = $post->reactions->summary->total_count; } 
    echo "REACTIONS: ", $reactions, "<br>"; 
    if($post->comments->summary->total_count == "") { $comments = "0"; } else { $comments = $post->comments->summary->total_count; } 
    echo "COMMENTS: ", $comments, "<br>"; 
    if($post->likes->summary->total_count == "") { $likes = "0"; } else { $likes = $post->likes->summary->total_count; } 
    echo "LIKES: ", $likes, "<br>"; 
    echo "<br><br>"; 
} 
Questions connexes