我正在使用Facebook IOS应用程序从Facebook获取用户数据(公共资料,电子邮件)。实施登录过程后,我可以获取用户个人资料图片的名字,姓氏和网址,但电子邮件我得到的是null。我已经通过了获取公开个人资料和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";
};
}
为什么我没有收到用户的电子邮件地址
答案 0 :(得分:8)
登录时。您必须询问用户对电子邮件的许可,否则您将收到电子邮件(null)。
无法获取电子邮件ID
FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init];
loginView.readPermissions = @[@"public_profile"];
如果您以上述权限登录,那么您将无法获得电子邮件ID,它将始终返回(null)。
将使用公开个人资料
获取电子邮件IDFBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init];
loginView.readPermissions = @[@"email"];
我们的应用会在成功登录后自动获得public_profile权限,但不会收到电子邮件。
同样适用于自定义登录。
请参阅:https://developers.facebook.com/docs/facebook-login/ios/v2.3#login-apicalls
答案 1 :(得分:0)
如果您假设将FBSDKLoginButton.readPermissions设置为["public_profile","email"]
的方式表达您希望Facebook用户的"public_profile"
及其"email"
地址的方式,您将会非常痛苦错误。在我看来非常混乱,下面给出了Facebook用户的公开个人资料和他们的电子邮件地址:
FBSDKLoginButton.readPermissions = ["email"]