【问题标题】:Facebook sdk 4 iOS user info email readpermissions dont workFacebook sdk 4 iOS 用户信息电子邮件读取权限不起作用
【发布时间】:2015-04-02 12:05:44
【问题描述】:

我尝试使用 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 只要求用户提供公共配置文件,检查图片:为什么读取权限不起作用?

【问题讨论】:

  • 找到解决办法了吗?

标签: ios objective-c facebook sdk


【解决方案1】:

我找到了解决方案,我真的不知道为什么,但它确实有效! 这很容易,当 Facebook Button 添加到故事板上时,您不应该初始化它。为了解决我的问题,我只需注释我初始化按钮的行。

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

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

现在一切正常;)

【讨论】:

    【解决方案2】:

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

    在我的最后尝试了您的代码并使用 FBSDKGraphRequest 获取电子邮件地址。

    【讨论】:

    • 我认为我不工作,因为当用户登录时,API 不要求良好的权限,请看图片。只有公开的个人资料
    • 在尝试使用 SDK v4 之前,我尝试过使用 V3 并出现同样的问题;(我不明白为什么。
    • 你可以尝试只传递电子邮件,因为 public_profile 默认情况下可用
    • 同样的事情......也许需要在我的应用程序设置中的 facebook 开发者控制台上设置一些特殊的东西?
    • 我也收到了电子邮件,但只在模拟器中,它没有在真实设备上提供。
    【解决方案3】:

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

    【讨论】:

    • 嗨,不,我尝试使用多个帐户。这是同样的问题,它是因为 facebook 不向用户询问好的信息而引起的。
    【解决方案4】:

    对于 sdk 4x,你可以使用这个

    当您开始请求权限时,请这样做:(因为 graph 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
    }];
    

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多