2011-06-28 21 views
2

我需要使用FB.api('/<some_id>/')從Facebook獲取基本用戶數據。這個效果很好,但速度很慢,因爲我需要分別詢問每個ID並對Facebook進行多次調用。有什麼辦法可以收集所有ID並在單個請求中請求並獲取數組?使用FB.api詢問多個用戶在單個請求中的數據facebook

編輯

我不要求用戶朋友。我實際上是想收集朋友的朋友的朋友,這是Facebook不提供的,這就是爲什麼我使用graph.facebook.com/<id>/而不是graph.facebook.com/me/friends。我不想朋友們,我想這樣做:graph.facebook.com/<id1>,<id2>,<id3>,../

回答

1

如何使用FQL

從Facebook的例子:

var friends = FB.Data.query(
    "(select uid2 from friend where uid1 = {0})", 
    user_id); 

var friendsoffriends = FB.Data.query(
    "select uid2 from friend where uid1 in (select uid2 from {0})", 
    friends; 

// Now, register a callback 
FB.Data.waitOn([friends, friendsoffriends], function() { 
    // now display all the results 
    FB.Array.forEach(friendsoffriends.value, function(row) { 
     console.log(row.uid); 
    }); 
}); 

那麼對於IDS的任何收集編輯你想使用。

上述方法仍然有效(作爲一個合理的普通例子) - 但是,澄清:

您將以前已經使用users.getInfo做你的要求,因爲這可以讓你通過UIDS的列表。不幸的是,這已被棄用。但是,所有這些查詢實際上確實包裝了一個FQL查詢。

如果再「在」語法適用標準FQL你可以做到這一點:

{ 
myfriends:'select uid2 from friend where uid1=me()', 
friendsoffriends:'select uid2 from friend where uid1 in (select uid2 from #myfriends)' 
} 

但是Facebook的積極阻止你用錯誤這樣做:

"error_code": 604, 
    "error_msg": "Can't lookup all friends of 123456789. Can only lookup for the logged in user (987654321), or friends of the logged in user with the appropriate permission", 

你的另一種選擇是獲取所有ID並執行表單的FQL查詢:

select name from user where uid='123456789' OR uid='987654321' OR uid=... 
+0

請看看我的編輯。 – gruszczy

+0

查看我的編輯 - 包括FB.Data.query語法中的更改 – BeRecursive

+0

這聽起來不錯。謝謝。 – gruszczy

2

您可以使用fql查詢讓所有的朋友的信息:

SELECT uid, name, pic_small FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 

如果提示用戶輸入更多的擴展權限你將能夠獲得訪問來自user table多個字段。

如果您試圖查詢不是用戶朋友的arbritary用戶標識列表,則可以嘗試在FQL查詢中指定該列表以使用Facebook的FQL Multiquery功能,執行多個select uid, name from user where uid = friendid1語句。

+0

請參閱我的編輯。 – gruszczy

+0

即使我認爲你的修改意味着什麼,這種FQL方法仍然有效。 –

+0

@gruszczy已更新。 – bkaid

0

FQL不再支持,但這種方法做的伎倆在新的API:

Requesting multiple Facebook fanpage data in a single call

總之使用ids PARAM:

FB.api(
    '/', 
    {ids : "19292868552,11239244970"}, 
    function(response) { 
     if (!response || response.error) { 
      console.log(response.error); 
     } else { 
      console.log(response); 
     } 
    } 
); 
相關問題