2010-11-24 10 views
0

J'utilise le code suivant pour récupérer la liste d'amis de l'utilisateur et les informations pour ces amis.Comment trouver l'information d'un ami plus rapidement en utilisant facebook php sdk

$frnd = $facebook ->api('/me/friends?access_token='.$accessToken.'&fields=id,name,about,hometown'); 
for ($i=0; $i<$nr_friends; $i++) 
    { 
    $friendinfo = $facebook->api('/'.$frnd["data"][$i]["id"].'?fields=id,name,hometown,location'); 
    echo $friendinfo['name']." ".$friendinfo['location']['name']." ".$friendinfo['hometown']['name']."</br>"; 
    } 

Le problème est que cette méthode prend beaucoup de temps pour charger les informations sur les amis. Y a-t-il un moyen de rendre cela plus rapide?

Répondre

2

Je pense que vous pouvez condenser l'interrogation des informations d'amis dans une API en transmettant les ID en tant que paramètre ids. Je ne l'ai pas testé, mais essayer quelque chose de semblable à ce qui suit:

// get a list of your your friends' IDs 
$friends = $facebook->api('/me/friends?access_token='.$accessToken.'&fields=id'); 

// condense those IDs into a comma-separated string 
$friends_ids = implode(',', $friends); 

// now query for friends' name, hometown and location 
$friends_info = $facebook->api('/?access_token='.$accessToken.'&fields=id,name,hometown,location&ids='.$friends_ids); 

Je ne suis pas sûr de la syntaxe exacte sans me tester, mais vous devriez trouver plus d'informations ici: http://developers.facebook.com/docs/api#reading

+0

merci pour l'idée! ça marche un peu plus vite! : D – aniri

+0

Heureux de vous entendre travailler! –

2

Utilisez le langue FQL:

$facebook->api(array('method'=>'fql.query','query'=>"SELECT uid,name,first_name,middle_name,last_name,pic_square,hometown_location,current_location,profile_url,email,website FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())")); 

pour une liste de toutes les tables avec leurs noms de colonnes correspondants je me réfère à: Facebook FQL Reference

2
<?php 
    $friends = $facebook->api('me/friends'); 

    //print_r($friends['data']); 
    print_r("Number of Friends: ". count($friends['data'])); 

    foreach ($friends['data'] as $key=>$listOfFriends) { 
     echo "<br/>".$key." ".$listOfFriends['name']."<img src='https://graph.facebook.com/".$listOfFriends['id']."/picture' width='50' height='50' title='".$listOfFriends['name']."' />";  
    } 

?>