2010-09-23 10 views
6

J'essaie d'obtenir l'adresse e-mail d'un utilisateur. Il se connecte, je demande la permission d'accéder au courrier électronique et il choisit ok. Ensuite, j'utilise l'API graphique de Facebook pour accéder à l'adresse e-mail.Impossible d'obtenir l'adresse e-mail en utilisant facebook sdk pour IOS et graphique api pour facebook


- (void) fbDidLogin 
{ 
    btnLogin.isLoggedIn = TRUE; 
    [btnLogin updateImage]; 

    NSString *theURL = 
    [ [NSString stringWithFormat: 
    @"https://graph.facebook.com/me?access_token=%@", facebook.accessToken 
    ]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding 
    ]; 

    NSLog(@"%@", theURL); 
    [facebook requestWithGraphPath: theURL andDelegate: self]; 
} 

... 

- (void)request:(FBRequest*)request didLoadRawResponse:(NSData*)data 
{ 
    NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
    NSLog(@"%@", response); 
    [response release]; 
} 

Voici comment je reçois l'information:


- (void) request:(FBRequest*)request didLoad:(id)result 
{ 
    if ([result isKindOfClass:[NSDictionary class]]) 
    { 
    NSString *email = [result objectForKey: @"email"]; 
    NSString *name = [result objectForKey: @"name"]; 
    NSString *facebookId = [result objectForKey: @"id"]; 
    //... 
    } 
} 

Il me donne que cette chaîne: { id = "https://graph.facebook.com/me"; } Qu'est-ce que je fait de mal?

Répondre

4

Ah ça va, ça marche. J'ai dû utiliser @"me" dans [facebook requestWithGraphPath: @"me" andDelegate: self]; au lieu de l'URL.

+0

@kudor: après avoir appelé requestWithGraphPath: @ « moi », comment avez-vous exactement extraire les informations nécessaires comme le courrier électronique dans votre cas? J'ai besoin de nom d'utilisateur. – WaJiyaz

+0

Je vais mettre le code dans ma question! Vous obtenez un NSDictionary et vous devez en tirer les valeurs. –

+0

salut, je l'ai essayé, mais la réponse reçue est "OAuthException": "Un jeton d'accès actif doit être utilisé pour interroger les informations sur l'utilisateur actuel" donc je suppose, il n'atteint pas la demande didLoad. – WaJiyaz

9

J'ai trouvé réponse:

NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_likes",@"offline_access",@"read_stream",@"publish_stream",@"email",nil]; 

    [facebook requestWithGraphPath:@"me"andParams:params andDelegate:self]; 
    -(void)facebookLoginScreen:(NSDictionary *)result 
    { 
     NSLog(%@,[result objectForKey:@"email"]); 
    } 
Questions connexes