的成員我正在創建一個javascript facebook應用程序以概覽我的朋友列表。其實我可以檢索我的(登錄用戶=我)朋友列表,當我點擊一個朋友列表時,我可以看到列表中的所有朋友。Facebook批處理/ fql朋友列表朋友是
當我現在想要的是,當我點擊一個列表時,我想查看屬於該列表的朋友以及我的朋友是其成員的逗號分隔列表。
例如在列表中「最佳」我有3個朋友:阿託斯,PORTOS,阿拉米斯。但他們也在其他名單。所以,在我的應用我想獲得這樣的事:
- 通過Athos:最佳,家庭,親密朋友,VIP
- PORTOS:最佳,VIP
- 阿拉米斯:最佳,親朋好友,派對動物
我試着用FQL多查詢,但似乎不可能得到我想要的。
所以我認爲我應該使用批處理請求,但由於我沒有很多使用批處理的經驗,所以我在詢問你的幫助。
所以這裏是我用來獲取屬於列表的朋友的FQL查詢。我需要這個,因爲我想管理從列表開始的朋友:
var listID = 123;//just enter a listID
var friendsInList = 'SELECT uid,username,profile_url,first_name,last_name,pic_square FROM user WHERE uid IN (SELECT uid FROM friendlist_member WHERE flid =' + listID +')';
現在我不知道如何進行清潔和有效的方式。我有一個工作,但效率不高的解決方案:
//[...]FB.api call to get a response object with all my friends using the friendsInList query above
for (var i = 0; i < response.length; i++) {
friendID = response[i].uid;
//call FB.api with the following query:
var friendListMemberships = 'SELECT uid, flid, name FROM friendlist_member WHERE flid IN (SELECT flid FROM friendlist WHERE owner=me()) AND uid IN (select uid FROM friendlist WHERE flid =' + friendID;
}
上述方案的作品,但效率非常低,因爲我送每個朋友FB.api請求,大名單很慢......因此,我想親用戶幫我把這個放在batch(一個批次最多可以有50個請求,因此我只想發送1-2個請求,並找回所有我需要的)。
我知道如何寫一個批處理,在這裏我把我的代碼的結構,如果它可以幫助你的第二個查詢完成它:
var listID = _listID;
var _queryFriendsInList = 'SELECT uid,username,profile_url,first_name,last_name,pic_square FROM user WHERE uid IN (SELECT uid FROM friendlist_member WHERE flid =' + listID + ')';
var queryFriendsInList = _queryFriendsInList.replace(" ", "+");
var _queryFriendListMemberships = 'I have no idea what kind of query I can write here to get the lists my friends from queryFriendsInList are member of';
var queryFriendListMemberships = _queryFriendListMemberships.replace(" ", "+");
var searchArgs = {
access_token: FB.getAuthResponse().access_token,
batch: []
};
searchArgs.batch.push({
'method': 'GET',
'name': 'friendsInList',
'relative_url': 'method/fql.query?query=' + queryFriendsInList,
'omit_response_on_success': false
});
//here is where I need help
searchArgs.batch.push({
'method': 'GET',
'name': 'friendlistMememberships',
'relative_url': 'method/fql.query?query=' + queryFriendListMemberships,
'omit_response_on_success': false
});
FB.api("/", "POST", searchArgs,
function (response) {
//console.log("log");
}
);
我希望這個問題和代碼樣本足夠清晰。感謝您的幫助!
如何首先獲取朋友和朋友列表,然後將數據放在客戶端?我認爲這會比試圖通過API來實現更高效。 – CBroe