如何在 iOS 上使用 Facebook SDK 3.1 获取用户的电子邮件?

Posted

技术标签:

【中文标题】如何在 iOS 上使用 Facebook SDK 3.1 获取用户的电子邮件?【英文标题】:How to get user's email with Facebook SDK 3.1 on iOS? 【发布时间】:2012-11-20 22:22:27 【问题描述】:

我正在使用电子邮件权限打开 facebook 会话,如下所示:

- (void)facebookOpenSession 
    NSArray *permissions = @[@"email"];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session, FBSessionState state, NSError *error) 
        [self sessionStateChanged:session state:state error:error];
    ];

然后会话状态的重要sn-p改变如下:

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error 
    switch (state) 
        case FBSessionStateOpen: 
            [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) 
             if (error) 
                //error
              else 
                 self.myFirstNameLabel.text = user.first_name;
                 self.myLastNameLabel.text = user.last_name;
                 // self.myEmailLabel.text = @"";
             
         ];
    
    ...

我如何实际提取用户的电子邮件?它是在提供的变量之一中,还是我必须在完成处理程序中进行另一个调用?

提前致谢!

【问题讨论】:

【参考方案1】:

FBGraphUser 没有该属性(我假设是因为它是可选的/仅在您请求电子邮件权限时才可用),但您仍然应该能够像这样从字典中访问它:

[user objectForKey:@"email"]

【讨论】:

【参考方案2】:

你应该在询问正确的权限之前检查

loginView.readPermissions = @[@"public_profile", @"email"];

【讨论】:

以上是关于如何在 iOS 上使用 Facebook SDK 3.1 获取用户的电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 iOS sdk 的 facebook 上获取好友生日和用户生日

如何在 ios 的新 facebook sdk 中实现深度链接?

使用 SWIFT 在 iOS SDK for Facebook 上使用 FBSDKGraphRequest

ios 应用程序的用户是不是可以使用 facebook-sdk 在 facebook 上喜欢 URL?

在 iOS Facebook SDK 3.0 上作为粉丝页面发布

使用 SDK 3.5 在 iOS 上连接 Facebook