ios - 在 iOS 中从 Facebook 获取用户的个人信息

标签 ios objective-c facebook facebook-sdk-4.0

我对 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/

相关文章:

ruby-on-rails - Rails 5 设计 omniauth-facebook 错误 : Sorry, 出错了

安卓 Facebook Intent

facebook-graph-api - 如何邀请 friend 加入您的应用:请求或消息?

ios - 带有嵌入式导航 Controller 的 Popover 不考虑后退导航的大小

ios - 设置键盘首字母大写

ios - 添加 appledoc 时出错

iphone - PVR Texture Compression Tiling(暴露边缘上下文)

ios - 如何自定义 FSCalendar

ios - 从另一个 Controller 加载 View Controller

ios - 在 Storyboard 中创建自定义 UITableview 节标题的最佳方法