iOS 开发之Facebook登录获取邮箱和个人信息

接入篇

iOS 版 Facebook 登录 — 快速入门

权限篇

iOS 应用权限管理

比如说获取邮箱权限:

//方式一:
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.readPermissions = @[@"email"];
//方式二:
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithReadPermissions:@[@"email"]
                    fromViewController:self
                               handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    //TODO: process error or result
    //注意这里面通过result是拿不到邮箱的
 }];
iOS 开发之Facebook登录获取邮箱和个人信息_第1张图片
Snip20180418_82.png

具体拿邮箱,还需要使用以下的请求操作:

//获取用户信息 picture用户头像  
- (void)getUserInfoWithResult:(FBSDKLoginManagerLoginResult *)result  
{  
    NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};  
      
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]  
                                  initWithGraphPath:result.token.userID  
                                  parameters:params  
                                  HTTPMethod:@"GET"];  
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {  
                        NSLog(@"%@",result);  
        /* 
         { 
         "age_range" =     { 
         min = 21; 
         }; 
         "first_name" = "\U6dd1\U5a1f"; 
         gender = female; 
         id = 320561731689112; 
         "last_name" = "\U6f58"; 
         link = "https://www.facebook.com/app_scoped_user_id/320561731689112/"; 
         locale = "zh_CN"; 
         name = "\U6f58\U6dd1\U5a1f"; 
         picture =     { 
         data =         { 
         "is_silhouette" = 0; 
         url = "https://fb-s-c-a.akamaihd.net/h-ak-fbx/v/t1.0-1/p50x50/18157158_290358084709477_3057447496862917877_n.jpg?oh=01ba6b3a5190122f3959a3f4ed553ae8&oe=5A0ADBF5&__gda__=1509731522_7a226b0977470e13b2611f970b6e2719"; 
         }; 
         }; 
         timezone = 8; 
         "updated_time" = "2017-04-29T07:54:31+0000"; 
         verified = 1; 
         } 
         */  
    }];  
}  

注意点:
①以上这个result就是第二种方式拿到的result
②以上获取的权限有两个,一个是public_profile和email两个权限,应该像如下这样写:

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithReadPermissions:@[@"email",@"public_profile"]
                    fromViewController:self
                               handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
 }];

③以上这个打印result发现可能没有email这个内容,为什么呢?我明明加了这个项对吧。原因可能是因为你没有添加邮箱作为Facebook的登录方式,所以你应该绑定个邮箱,这样才能获取到你的邮箱了,添加邮箱位置:


iOS 开发之Facebook登录获取邮箱和个人信息_第2张图片
Snip20180418_81.png

当然还可以获取用户的好友关系等等~~~

当然服务端也是可以通过UID和TOKEN去获取的...

推荐阅读:

国外第三方登录之facebook(登录、获取用户信息、朋友列表等)含demo

你可能感兴趣的:(iOS 开发之Facebook登录获取邮箱和个人信息)