我对 Objective-C 和 iPhone 开发环境还很陌生。
我正在我的应用程序中实现 Facebook 登录以获取用户名、电子邮件和个人资料图片。我已经成功地实现了登录部分,并且已经收到了该人的姓名和用户 ID。
现在我想从 Facebook 获取用户的电子邮件和个人资料图片。但我不知道如何获取它。我正在使用 Facebook IOS SDK v4.0。
当我拥有用户 ID 时,如何从 Facebook 获取用户的个人资料图片和电子邮件 ID?
最佳答案
要获取用户电子邮件 ID,您必须在登录时请求对电子邮件的许可。
FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init];
loginView.readPermissions = @[@"email"];
loginView.frame = CGRectMake(100, 150, 100, 40);
[self.view addSubview:loginView];
您可以使用 GraphPath 在 New SDK 中获取用户电子邮件 ID。
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@ and Email : %@", result,result[@"email"]);
}
}];
}
result 将为您提供所有用户详细信息,result[@"email"] 将为您提供登录用户的电子邮件。
要获取个人资料图片,您可以使用
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];
或者您也可以使用 FBSDKProfilePictureView 通过传递用户个人资料 ID 来获取个人资料图片:
FBSDKProfilePictureView *profilePictureview = [[FBSDKProfilePictureView alloc]initWithFrame:_imageView.frame];
[profilePictureview setProfileID:result[@"id"]];
[self.view addSubview:profilePictureview];
引用:https://developers.facebook.com/docs/facebook-login/ios/v2.3#profile_picture_view
或者你也可以通过传递参数来获取两者
[[[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]);
}
}];
关于ios - 在 iOS 中从 Facebook 获取用户的个人信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471243/