versiones descargar caracteristicas apple app ios objective-c facebook facebook-sdk-4.0

descargar - Obteniendo información personal del usuario de Facebook en iOS



ios descargar (4)

Soy bastante nuevo en el entorno de desarrollo de objetivo-C y iPhone.

Estoy implementando el inicio de sesión de Facebook en mi aplicación para obtener el nombre del usuario, el correo electrónico y la foto del perfil. He implementado con éxito la parte de inicio de sesión y he recibido el nombre y la ID de usuario de la persona.

Ahora quiero recibir el correo electrónico del usuario y la imagen de perfil de Facebook. Pero no tengo ninguna idea de cómo obtenerlo. Estoy usando el SDK de Facebook IOS v4.0.

¿Cómo puedo obtener la imagen de perfil del usuario y la identificación de correo electrónico de Facebook cuando tengo una identificación de usuario?


Lo siento por esta desordenada respuesta, esta es mi primera respuesta. Puede utilizar la solicitud FBSDK Graph para obtener todas las informaciones de perfil del usuario y la clase FBSDKProfilePictureView para obtener la imagen de perfil del usuario fácilmente. Este código es para la IU de inicio de sesión de Facebook manualmente.

En primer lugar, debe colocar este código donde comienza el proceso de inicio de sesión:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { // There is an error here. } else { if(result.token) // This means if There is current access token. { // Token created successfully and you are ready to get profile info [self getFacebookProfileInfo]; } } }];

Y si el inicio de sesión es exitoso, implemente este método para obtener el perfil público del usuario;

-(void)getFacebookProfileInfos { FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me" parameters:nil]; FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; [connection addRequest:requestMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if(result) { if ([result objectForKey:@"email"]) { NSLog(@"Email: %@",[result objectForKey:@"email"]); } if ([result objectForKey:@"first_name"]) { NSLog(@"First Name : %@",[result objectForKey:@"first_name"]); } if ([result objectForKey:@"id"]) { NSLog(@"User id : %@",[result objectForKey:@"id"]); } } }]; [connection start];

Obtener la sesión actual en la imagen de perfil del usuario:

FBSDKProfilePictureView *pictureView=[[FBSDKProfilePictureView alloc]init]; [pictureView setProfileID:@"user_id"]; [pictureView setPictureMode:FBSDKProfilePictureModeSquare]; [self.view addSubview:pictureView];

Debe agregar un código de actualización a su método viewDidLoad:

[FBSDKProfile enableUpdatesOnAccessTokenChange:YES];


Para obtener la ID de correo electrónico del usuario, debe solicitar permiso para el correo electrónico mientras se registra.

FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; loginView.readPermissions = @[@"email"]; loginView.frame = CGRectMake(100, 150, 100, 40); [self.view addSubview:loginView];

Puede obtener la ID de correo electrónico del usuario en el nuevo SDK utilizando GraphPath.

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSLog(@"fetched user:%@ and Email : %@", result,result[@"email"]); } }]; }

el resultado le proporcionará todos los Detalles del usuario y el resultado [@ "correo electrónico"] le proporcionará el correo electrónico para el usuario registrado.

Para obtener la imagen de perfil puede utilizar

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=normal",result[@"id"]]]; NSData *data = [NSData dataWithContentsOfURL:url]; _imageView.image = [UIImage imageWithData:data];

o u también puede usar FBSDKProfilePictureView para obtener una imagen de perfil al pasar la identificación del perfil de usuario:

FBSDKProfilePictureView *profilePictureview = [[FBSDKProfilePictureView alloc]initWithFrame:_imageView.frame]; [profilePictureview setProfileID:result[@"id"]]; [self.view addSubview:profilePictureview];

Consulte: https://developers.facebook.com/docs/facebook-login/ios/v2.3#profile_picture_view

o u también puede obtener tanto pasando como parámetros

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"picture, email"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSString *pictureURL = [NSString stringWithFormat:@"%@",[result objectForKey:@"picture"]]; NSLog(@"email is %@", [result objectForKey:@"email"]); NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:pictureURL]]; _imageView.image = [UIImage imageWithData:data]; } else{ NSLog(@"%@", [error localizedDescription]); } }];


#import <FBSDKCoreKit/FBSDKAccessToken.h> #import <FBSDKCoreKit/FBSDKGraphRequest.h>

Añadir YourViewController.h

- (IBAction)loginAction:(id)sender { // https://developers.facebook.com/docs/graph-api/reference/user // https://developers.facebook.com/docs/ios/graph if ([FBSDKAccessToken currentAccessToken]) { [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,first_name,last_name"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSLog(@"fetched user:%@", result); // Here u can update u r UI like email name TextField } }]; } }


Hope This could Help You .. - (IBAction)Loginwithfacebookaction:(id)sender { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logOut]; [login logInWithReadPermissions:@[@"public_profile"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"Process error"); } else if (result.isCancelled) { NSLog(@"Cancelled"); } else { [self getFacebookProfileInfos]; } }]; } - (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { NSLog(@"Received error %@ and auth object %@",error, auth); if (!error) { email =signIn.userEmail; [[NSUserDefaults standardUserDefaults] setObject:email forKey:@"useremail"]; NSLog(@"Received error and auth object %@",signIn.userEmail); NSLog(@"Received error and auth object %@",signIn.userID); if ( auth.userEmail) { [[[GPPSignIn sharedInstance] plusService] executeQuery:[GTLQueryPlus queryForPeopleGetWithUserId:@"me"] completionHandler:^(GTLServiceTicket *ticket, GTLPlusPerson *person, NSError *error) { // this is for fetch profile image NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",person.image.url]]; NSLog(@"%@",url); name= person.displayName; [[NSUserDefaults standardUserDefaults] setObject:name forKey:@"userNameLogin"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSLog(@"Name:%@",person.displayName); [self callWebserviceToUploadImage]; }]; } } } -(void)getFacebookProfileInfos { FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]initWithGraphPath:@"/me?fields=first_name, last_name, picture, email" parameters:nil]; FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; [connection addRequest:requestMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if(result) { if ([result objectForKey:@"email"]) { email = [result objectForKey:@"email"]; [[NSUserDefaults standardUserDefaults] setObject:email forKey:@"useremail"]; } if ([result objectForKey:@"first_name"]) { NSLog(@"First Name : %@",[result objectForKey:@"first_name"]); name = [result objectForKey:@"first_name"]; [[NSUserDefaults standardUserDefaults] setObject:name forKey:@"userNameLogin"]; } if ([result objectForKey:@"id"]) { NSLog(@"User id : %@",[result objectForKey:@"id"]); } } [self callfbloginwebservice]; }]; [connection start]; }