2011-04-11 74 views
8

我對Facebook API相當陌生。我想獲得我的朋友也安裝了我的應用程序的列表。 (這個想法就是你可以和他們一起開始一場比賽)。Facebook應用用戶列表

這給我的朋友列表:

FB.api('/me/friends', ... 

這讓我的應用程序信息:

FB.api('/myappid', ... 

我要的是「我的朋友誰也已安裝此應用程序」

我認爲這可能是這樣的:

我希望至少能夠給我開發人員,管理員或測試人員,但沒有這樣的運氣。 http://developers.facebook.com/docs/test_users/ http://developers.facebook.com/docs/ApplicationSecurity/

我的感覺是,也許我不得不使用FQL到construst查詢說像

(psuedocode) 
SELECT 
FROM my_friends 
WHERE uid IN (
    SELECT uid 
    FROM app_users 
    WHERE appid = myappid 
) 

任何意見將不勝感激。

注意,我已經看到了這個帖子: FaceBook app: retrieve list of ids of my application's users

我保持那個屬於我的網站Facebook用戶ID的本地列表,我居然能夠通過執行以下操作來實現我的目標,但我我肯定必須有一個更好的辦法:

$facebookFriendIds = array(); 
$friends = $this->facebook->api('/me/friends'); 
foreach ($friends['data'] as $friend) { 
    $facebookFriendIds[] = $friend['id']; 
} 

$this->friends = Doctrine_Core::getTable('User')->createQuery() 
    ->whereIn('fb_user_id', $facebookFriendIds) 
    ->execute(); 

回答

1

使用此查詢在JS

function getAppFriends() 
{ 

    var fql = "SELECT uid, name, pic_square, is_app_user 
       FROM user 
       WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 
       OR uid IN(SELECT uid1 FROM friend WHERE uid2=me()) 
       ORDER BY name"; 

    var query = FB.Data.query(fql); 

    query.wait(function(responseFromFb){ 

     if(responseFromFb!=null){ 

      // Read the responseFromFb and check for 
      // is_app_user = true and list them out the way 
      // you want to. 

     } 

    });// anonymus function closes here 
} //function ends here 
+0

你想要什麼比這更可讀? ;) – 2013-10-12 18:31:46

+0

沒事:-) ... – kleopatra 2013-10-12 22:03:36

相關問題