2010-11-24 13 views
0

私は次のコードを使って、ユーザーの友人リストとその友人の情報を取得しています。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>"; 
    } 

問題は、このメソッドは、友人の情報を読み込むために多くの時間がかかることです。これをもっと速くする方法はありますか?

答えて

2

IDをidsパラメータとして渡すことで、友人の情報のクエリを1つのAPIに集約できます。私はこれをテストしたが、次のような何かをしようとしていない:

// 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); 

私は自分自身をテストすることなく正確な構文上のわからないんだけど、あなたはより多くの情報をここで見つける必要があります:http://developers.facebook.com/docs/api#reading

+0

アイデアありがとう!それは少し速く動作します! :D – aniri

+0

うれしいことを聞いてうれしい何かがある! –

2

使用インクルード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())")); 

私はを参照して、対応する列名を持つすべてのテーブルのリストについて: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']."' />";  
    } 

?> 
関連する問題