내 친구 목록에 대한 개요를 보려면 자바 스크립트 페이스 북 앱을 만들고 있습니다. 실제로 (로그인 한 사용자 = 나) 친구 목록을 검색 할 수 있습니다. 친구 목록을 클릭하면 그 목록에있는 모든 친구를 볼 수 있습니다.facebook 배치/fql 친구 목록 친구가
내가 지금 원하는 것은 목록을 클릭하면 그 목록에 속하는 친구를보고 싶고, 쉼표로 구분 된 목록은 내 친구가 구성원 인 것입니다. 목록 예를 들어
"최고의" 나는 세 친구가 있습니다 아토스, 포르 토스, 아라미스을. 그러나 그들은 또한 다른 목록에 있습니다.
- 아토스 : : 최고의, 가족, 친한 친구, VIP
- 포르 토스 : 제일, 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