2013-01-22 11 views
9

Próbuję uzyskać listę wszystkich moich znajomych z Facebooka, którzy korzystają z aplikacji Otrzymuję listę wszystkich znajomych, ale jak mogę filtrować wszystkich znajomych, którzy używają tej aplikacji?iOS Facebook SDK - pobierz listę znajomych związanych z aplikacją

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

    }]; 

Dzięki.

+1

Prawdopodobnie związane z http://stackoverflow.com/questions/2785093/facebook-friends-getappusers-using-graph-api –

Odpowiedz

7

Ów sposób, jak to działa z 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

Tak właśnie zrobiłem przy mojej ostatniej aplikacji. Możesz przetestować go na https://developers.facebook.com/tools/explorer –

1

Możesz to zrobić za pomocą FQL. Będzie bezpośrednio podawać listę znajomych, którzy korzystają z aplikacji.

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

ten może być stosowany do najnowszej Facebook API 3.2,

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

"is_app_user", które trzeba sprawdzić.

- (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

Powinien być zamknięty, ponieważ Facebook zmienił sposób, w jaki można uzyskać dostęp do listy przyjaciół. Teraz masz dostęp tylko do użytkowników aplikacji.

Powiązane problemy