iOS Facebook的SDK – 获取与应用程序连接的朋友列表

我正在尝试获取所有使用应用程序的Facebook朋友的列表,我正在获取所有朋友的列表,但是如何筛选所有使用该应用程序的朋友?

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; }]; }]; 

谢谢。

多数民众赞成在如何与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; }]; }]; 

这可以用于最新的Facebook API 3.2,

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

“is_app_user”,你需要检查。

 - (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"]); }]; } 

你可以用FQL来完成。 它会直接给出正在使用应用程序的朋友的列表。

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

应该closures,因为Facebook已经改变了你可以访问朋友列表的方式。 现在,您只能访问应用用户。