Facebook sdk 4 iOS用户信息电子邮件读取权限不起作用
我尝试使用iOS Facebook SDK版本4 我顺利完成了登录,但无法使用graph API获取用户电子邮件地址。如果有人有一个解决方案,它可以是非常酷的 这里是我的代码,在视图中加载:Facebook sdk 4 iOS用户信息电子邮件读取权限不起作用,ios,objective-c,facebook,sdk,Ios,Objective C,Facebook,Sdk,我尝试使用iOS Facebook SDK版本4 我顺利完成了登录,但无法使用graph API获取用户电子邮件地址。如果有人有一个解决方案,它可以是非常酷的 这里是我的代码,在视图中加载: _FBButton = [[FBSDKLoginButton alloc] init]; _FBButton.readPermissions = @[@"public_profile", @"email"]; _FBButton.delegate = self; 以下是登录成功时的方法: - (vo
_FBButton = [[FBSDKLoginButton alloc] init];
_FBButton.readPermissions = @[@"public_profile", @"email"];
_FBButton.delegate = self;
以下是登录成功时的方法:
- (void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error: (NSError *)error{
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result2, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@", result2);
}
}];
}
}
结果如下:
"first_name" = Jack;
gender = male;
id = 1381385368853232;
"last_name" = Ammer;
link = "https://www.facebook.com/app_scoped_user_id/1381385368853232/";
locale = "fr_FR";
name = "Jack Ammer";
timezone = 2;
"updated_time" = "2015-04-02T07:26:35+0000";
verified = 1;
那么为什么我可以得到电子邮件地址呢
提前谢谢
编辑
问题可能是因为facebook只向用户询问公共资料,查看图片:为什么readpermissions不起作用
正确检查您必须将用户电子邮件地址输入控制台
在我这端尝试了你的代码,并使用FBSDKGraphRequest获取电子邮件地址。我的问题是我的facebook帐户没有经过验证的电子邮件地址(是的,这可能会发生!)。请查看您的个人资料设置页面。我找到了解决方案,我真的不知道为什么,但它确实有效! 这很简单,当Facebook按钮添加到故事板上时,你不应该初始化它。为了解决我的问题,我只需对我初始化按钮的行进行注释
//facebook
// _FBButton = [[FBLoginView alloc] initWithReadPermissions:@[@"email"]];
_FBButton.readPermissions = @[@"email"];
_FBButton.delegate = self;
现在一切正常;) 对于sdk 4x,您可以使用 当您开始请求权限时,请这样做:(因为graph api目前已升级到2.5,其中电子邮件尚未成为默认权限) 然后在这里面,继续这样
if ([FBSDKAccessToken currentAccessToken])
{
NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
[parameters setValue:@"id, name, email, gender" forKey:@"fields"];
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:parameters]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
// fetch all your datas
}];
我认为我不工作,因为当用户登录时,API不要求良好的权限,请看图片。在尝试使用SDK v4之前,只有公共利润,我尝试使用V3,这是相同的问题;(我不明白为什么。你可以试着只发送电子邮件吗?因为默认情况下可以使用public_配置文件。同样的事情……可能需要在facebook开发者控制台的“我的应用程序设置”中设置一些特殊的设置?我也会收到电子邮件,但只在模拟器中收到,而不会在真实设备上发送。嗨,不,我尝试使用多个帐户。这是同样的问题,不是吗这是因为facebook没有向用户询问好的信息。找到解决方案了吗?
if ([FBSDKAccessToken currentAccessToken])
{
NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
[parameters setValue:@"id, name, email, gender" forKey:@"fields"];
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:parameters]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
// fetch all your datas
}];