无法在Facebook ios SDK中获取已登录人员的电子邮件ID

我正在使用Facebook IOS应用程序从Facebook获取用户数据(公共资料,电子邮件)。实施登录过程后,我可以获取用户个人资料图片的名字,姓氏和url,但我收到的电子邮件一片空白。 我已经通过了获取公开个人资料和Emial的许可。但我没有收到该人的电子邮件。

我正在使用facebook SDK for ios V4.0.1

这是我的代码

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, picture, email"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSString *firstName = [NSString stringWithFormat:@"%@",[result objectForKey:@"first_name"]]; NSString *lastName = [NSString stringWithFormat:@"%@",[result objectForKey:@"last_name"]]; NSString *email = [NSString stringWithFormat:@"%@",[result objectForKey:@"email"]]; NSString *picurl = [NSString stringWithFormat:@"%@",[result objectForKey:@"picture"]]; NSLog(@"email is %@", [result objectForKey:@"email"]); NSLog(@"picture is %@", [result objectForKey:@"picture"]); } else{ NSLog(@"%@", [error localizedDescription]); } }]; 

我得到以下输出:

 email is (null) picture is { data = { "is_silhouette" = 0; url = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/v/t1.0-1/p50x50 **************_************_n.jpg?oh=ed5fd60c770cb5f34424b3fcfb4ca174&oe=559F472D&__gda__=1437970763_989a264cf7ec16f5d51b0a58b7e7f609"; }; } 

为什么我没有收到用户的电子邮件地址

记录时。 您必须询问用户对电子邮件的许可,否则您将收到电子邮件(null)。

无法获取电子邮件ID

 FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; loginView.readPermissions = @[@"public_profile"]; 

如果您以上述权限登录,那么您将无法获得电子邮件ID,它将始终返回(null)。

将使用公共个人资料获取电子邮件ID

 FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; loginView.readPermissions = @[@"email"]; 

我们的应用程序在成功登录后会自动获得public_profile权限,但不会收到电子邮件。

自定义登录也是如此。

请参阅: https : //developers.facebook.com/docs/facebook-login/ios/v2.3#login-apicalls

如果您假设将FBSDKLoginButton.readPermissions设置为["public_profile","email"]的逻辑将表达您想要Facebook用户的"public_profile"及其"email"地址,那么您将会非常错误。 在我看来非常混乱,以下内容为您提供Facebook用户的公开个人资料和他们的电子邮件地址:

 FBSDKLoginButton.readPermissions = ["email"]