Estoy tratando de obtener acceso a la información de algunos usuarios, incluido el correo electrónico. Para este propósito, utilizo el API de gráficos para llamar a este método:Facebook iOS SDK no devuelve el correo electrónico del usuario
[facebook requestWithGraphPath:@"me" andDelegate:self];
Devuelve la información del usuario, sin la información de correo electrónico (el cumpleaños también falta). Configuré todos los permisos y probé con más de una cuenta (que tiene el correo electrónico y el cumpleaños como información pública) y acepté todas las solicitudes del diálogo.
Aquí es mi init:
if(!facebook) {
facebook = [[Facebook alloc] initWithAppId:[self _APP_KEY] andDelegate:self];
NSArray *array = [NSArray arrayWithObjects: @"email", @"user_birthday", @"publish_stream", @"offline_access", nil];
[self setPermissions:array];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:permissions];
}
else {
[self getUserInfo];
}
La devolución de llamada entrada:
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
[self getUserInfo];
}
El método getUserInfo:
- (void) getUserInfo {
[facebook requestWithGraphPath:@"me" andDelegate:self];
}
La solicitud de devolución de llamada:
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSDictionary class]]) {
NSDictionary* json = result;
NSLog(@"-> %@", json);
}
}
El resultado es el siguiente:
-> {
"first_name" = EDITED (my name);
gender = male;
hometown = {
id = 111072692249998;
name = "Porto Alegre";
};
id = 653099452;
languages = (
{
id = 104034306299811;
name = "Brazilian Portuguese";
},
{
id = 106059522759137;
name = English;
}
);
"last_name" = EDITED (my last name);
link = EDITED (my profile);
locale = "en_US";
location = {
id = 112047398814697;
name = "S\U00e3o Paulo, Brazil";
};
name = EDITED (my name);
timezone = "-3";
"updated_time" = "2012-04-25T13:36:51+0000";
verified = 1;
}
Como se puede ver, no hay información acerca de correo electrónico del usuario. ¿Me estoy perdiendo un paso? ¿Alguna ideia?
Gracias de antemano
ninguna de estas respuestas funciona? o lo hacen? Se supone que debes seleccionar una respuesta correcta aquí para el beneficio de otros usuarios. – Dobler