Facebook sdk 4 iOS用户信息电子邮件readpermissions不工作

时间:2015-04-02 12:05:44

标签: ios objective-c facebook sdk

我尝试使用iOS Facebook SDK第4版。

我完成了登录而没有任何问题,但无法使用图形API获取用户电子邮件地址。如果某人有解决方案可能会非常酷。

这里是我的代码,在视图中加载了:

_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不起作用?

enter image description here

4 个答案:

答案 0 :(得分:1)

我找到了解决方案,我真的不知道为什么会这样,但它确实有效! 这很简单,你不应该在故事板上添加Facebook按钮时初始化它。为了解决我的问题,我只是评论我初始化按钮的行。

 //facebook
 // _FBButton = [[FBLoginView alloc] initWithReadPermissions:@[@"email"]];

 _FBButton.readPermissions = @[@"email"];
 _FBButton.delegate = self;

现在一切正常;)

答案 1 :(得分:0)

正确检查您必须将用户电子邮件地址输入控制台。

尝试使用FBSDKGraphRequest获取您的代码并获取电子邮件地址。

答案 2 :(得分:0)

我的问题是我的Facebook帐户没有经过验证的电子邮件地址(是的,这可能会发生!)。请检查您的个人资料设置页面。

答案 3 :(得分:0)

对于sdk 4x,您可以使用此

当你开始询问权限时这样做:(因为截至目前,图表api已经升级到2.5,其中电子邮件尚未被默认许可)

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

然后在里面,继续像

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
}];