无法获得FBGraphUser电子邮件

Mic*_*tai 3 facebook objective-c facebook-graph-api ios

我使用Facebook登录我的应用程序.(Facebook iOS SDK版本3.11.1)

我要求"电子邮件"许可:

NSArray *permissions = [NSArray arrayWithObjects: @"basic_info", @"email", nil];
Run Code Online (Sandbox Code Playgroud)

大多数时候,我确实得到了用户的电子邮件:

NSString *email = [user objectForKey:@"email"];
//user is (NSDictionary<FBGraphUser> *)
Run Code Online (Sandbox Code Playgroud)

有时我只是不这样做.(我可以看到NSDictionary不包括电子邮件).

我正在使用此修复程序,因此当我稍后使用电子邮件时,应用程序将不会终止,并且其nil:

NSString *email = [user objectForKey:@"email"] ? [user objectForKey:@"email"] : @"NO_EMAIL";
Run Code Online (Sandbox Code Playgroud)

但我需要真正的邮件,所以我必须提出一个新的解决方案.我没有注意到有问题的用户有什么特别之处.任何想法可能是什么问题?

Mic*_*tai 5

它似乎是一个众所周知的问题......出于很多原因,并非Facebook上的每个人都有注册的电子邮件地址.

但正如我所说,我的问题是我需要一个真正的邮件.所以最简单的解决方案是使用用户的Facebook Email:user_name@facebook.com

NSString *email = [user objectForKey:@"email"] ? [user objectForKey:@"email"] : [NSString stringWithFormat:@"%@@facebook.com", user.username];
Run Code Online (Sandbox Code Playgroud)
  • 一些链接参考,你不能发送HTML电子邮件到Facebook邮件,只有纯文本!