繁体   English   中英

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

[英]How to get user's email with Facebook SDK 3.1 on iOS?

我正在使用电子邮件权限打开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];
    }];
}

然后会话状态的重要片段改变如下:

- (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 = @"";
             }
         }];
    }
    ...

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

提前致谢!

FBGraphUser没有属性(我假设因为它是可选的/只有在你要求电子邮件权限时才可用)但你仍然可以从字典中访问它,如下所示:

[user objectForKey:@"email"]

您应该在询问正确的权限之前进行检查

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM