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

标签 objective-c ios facebook

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

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

然后 session 状态更改的重要片段如下所示:

- (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"]

关于objective-c - 如何在 iOS 上使用 Facebook SDK 3.1 获取用户的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483234/

相关文章:

ios - 在 Objective-C 中解析 JSON 中的 JSON

ios - UIPageViewController 向前转动时加载缓慢,但不会向后转动

objective-c - 如何将格式说明符添加到NSURL

ios - 更改事件时区是否会影响共享事件中的其他人?

ios - 如何为 iPhone 5 屏幕分辨率开发或迁移应用程序?

ios - 方法不会覆盖其父类(super class) swift 3.0 错误中的任何方法

facebook - Facebook SDK + html5 与 xfbml 的最佳使用

Facebook 中的 ruby Mechanize

ios - 如何为本地通知添加重复计数或过期日期

ios - 使用 FBSDKMessenger 打开特定用户的 facebook Messenger