2013-01-22 43 views
9

Tôi đang cố gắng để có được danh sách tất cả bạn bè trên Facebook của tôi, đang sử dụng Ứng dụng Tôi nhận danh sách tất cả bạn bè, nhưng làm cách nào để lọc tất cả bạn bè đang sử dụng ứng dụng?iOS Facebook SDK - nhận danh sách Bạn bè được kết nối với Ứng dụng

FBRequest* friendsRequest = [FBRequest requestForMyFriends]; 
    [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection, 
                NSDictionary* result, 
                NSError *error) { 
     NSArray* friends = [result objectForKey:@"data"]; 
     NSLog(@"Found: %i friends", friends.count); 
     for (NSDictionary<FBGraphUser>* friend in friends) { 
      NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id); 

     } 
     NSArray *friendIDs = [friends collect:^id(NSDictionary<FBGraphUser>* friend) { 
      return friend.id; 
     }]; 

    }]; 

Cảm ơn.

+1

Có thể liên quan đến http://stackoverflow.com/questions/2785093/facebook-friends-getappusers-using-graph-api –

Trả lời

7

Thats cách làm thế nào nó hoạt động với iOS5 +

FBRequest* friendsRequest = [FBRequest requestWithGraphPath:@"me/friends?fields=installed" parameters:nil HTTPMethod:@"GET"]; 
     [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection, 
                 NSDictionary* result, 
                 NSError *error) { 
      NSArray* friends = [result objectForKey:@"data"]; 
      NSLog(@"Found: %i friends", friends.count); 
      for (NSDictionary<FBGraphUser>* friend in friends) { 
       NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id); 

      } 
      NSArray *friendIDs = [friends collect:^id(NSDictionary<FBGraphUser>* friend) { 
       return friend.id; 
      }]; 

    }]; 
+0

Đây là cách tôi đã làm trên ứng dụng cuối cùng của mình. Bạn có thể kiểm tra nó trên https://developers.facebook.com/tools/explorer –

1

Bạn có thể làm điều đó với FQL. Nó sẽ trực tiếp cung cấp danh sách bạn bè đang sử dụng ứng dụng.

SELECT uid FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?) 
AND is_app_user = 1 
7

Điều này có thể được sử dụng cho tất Facebook API 3.2,

[FBRequestConnection startForMyFriendsWithCompletionHandler: 
    ^(FBRequestConnection *connection, id<FBGraphUser> friends, NSError *error) 
    { 
     if(!error){ 
      NSLog(@"results = %@", friends); 
     } 
    } 
]; 
2

"is_app_user" mà bạn cần phải kiểm tra.

- (void)getFriends 
{ 

    NSString *query = @"select uid, name, is_app_user " 
    @"from user " 
    @"where uid in (select uid2 from friend where uid1=me())"; 
    NSDictionary *queryParam = 
    [NSDictionary dictionaryWithObjectsAndKeys:query, @"q", nil]; 
    // Make the API request that uses FQL 
    [FBRequestConnection startWithGraphPath:@"/fql" 
           parameters:queryParam 
           HTTPMethod:@"GET" 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) { 
           if (error) { 
            DLog(@"Error: %@", [error localizedDescription]); 
            [self.delegate FBDidFailedLoadFriends:error]; 
           } else { 
            DLog(@"Result: %@", result); 
           } 
           DLog(@"%@",((FBGraphObject*)result)[@"data"]); 
          }]; 
} 
0

Nên đóng cửa khi Facebook đã thay đổi cách bạn có thể truy cập danh sách bạn bè. Bây giờ tất cả những gì bạn có thể truy cập là người dùng ứng dụng.

Các vấn đề liên quan