32 votes

Facebook iOS SDK - obtenir la liste d'amis

À l'aide du SDK Facebook iOS, comment puis-je obtenir un NSArray de tous mes amis et leur envoyer une invitation à mon application? Je cherche spécifiquement le chemin du graphe pour avoir tous les amis.

73voto

Jeff Points 3417

Avec Facebook SDK 3.0, vous pouvez faire ceci:

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

14voto

JeffB6688 Points 1458

Voici une solution plus complète:

Dans votre fichier d'en-tête:

 @interface myDelegate : NSObject <UIApplicationDelegate, FBSessionDelegate, FBRequestDelegate> {
    Facebook *facebook;
    UIWindow *window;
    UINavigationController *navigationController;

    NSArray *items; // to get facebook friends
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@property (nonatomic, retain) Facebook *facebook;
@property (nonatomic, retain) NSArray *items;
@end
 

Puis dans votre implémentation:

 @implementation myDelegate

@synthesize window;
@synthesize navigationController;
@synthesize facebook;
@synthesize items;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

...


    facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID_FROM_FACEBOOK" andDelegate:self];

    [facebook requestWithGraphPath:@"me/friends" andDelegate:self];

    return YES;
}
 

Ensuite, vous avez besoin au moins de la méthode de protocole de délégué suivante:

 - (void)request:(FBRequest *)request didLoad:(id)result {
    //ok so it's a dictionary with one element (key="data"), which is an array of dictionaries, each with "name" and "id" keys
    items = [[(NSDictionary *)result objectForKey:@"data"]retain];
    for (int i=0; i<[items count]; i++) {
        NSDictionary *friend = [items objectAtIndex:i];
        long long fbid = [[friend objectForKey:@"id"]longLongValue];
        NSString *name = [friend objectForKey:@"name"];
        NSLog(@"id: %lld - Name: %@", fbid, name);
    }
}
 

10voto

imthi Points 2242

Pour obtenir une liste d'amis, vous pouvez utiliser

https://graph.facebook.com/me/friends

 [facebook requestWithGraphPath:@"me/friends"
                     andParams:nil
                   andDelegate:self];
 

Pour en savoir plus sur toutes les API possibles, veuillez lire

https://developers.facebook.com/docs/reference/api/

8voto

John Paul Manoza Points 548

Peut-être que cela pourrait aider

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

3voto

Zorayr Points 2637

Utilisez la fonction ci-dessous pour extraire de manière asynchrone les amis de l'utilisateur stockés dans un NSArray:

 - (void)fetchFriends:(void(^)(NSArray *friends))callback
{
    [FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id response, NSError *error) {
        NSMutableArray *friends = [NSMutableArray new];
        if (!error)
        {
            [friends addObjectsFromArray:(NSArray*)[response data]];
        }
        callback(friends);
    }];
}
 

Dans votre code, vous pouvez l'utiliser comme tel:

 [self fetchFriends:^(NSArray *friends) {
    NSLog(@"%@", friends);
}];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X