2010-09-23 16 views
6

Estoy tratando de obtener la dirección de correo electrónico de un usuario. Él inicia sesión, solicito permiso para acceder al correo electrónico y él elige aceptarlo. Luego utilizo la API gráfica de Facebook para acceder a la dirección de correo electrónico.No se puede obtener la dirección de correo electrónico mediante facebook sdk para IOS y gráfico de API para 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]; 
} 

Éste es cómo obtener la información:


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

Me da sólo que esta cadena: { id = "https://graph.facebook.com/me"; } ¿Qué hice mal?

Respuesta

4

Ah, no lo creo, funciona. Tuve que usar @"me" en [facebook requestWithGraphPath: @"me" andDelegate: self]; en lugar de la URL.

+0

@kudor: después de llamar requestWithGraphPath: @ "yo", ¿cómo es exactamente lo que extraer la información necesaria como el correo electrónico, en su caso? Necesito nombre de usuario – WaJiyaz

+0

¡Pondré el código en mi pregunta! Obtienes un 'NSDictionary' y tienes que obtener los valores de él. –

+0

hola, lo probé pero la respuesta recibida es "OAuthException": "Se debe usar un token de acceso activo para consultar información sobre el usuario actual", así que supongo que no llega a la solicitud didLoad. – WaJiyaz

9

He encontrado la respuesta:

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