ios - FB 用户 emailID 未获取

标签 ios objective-c xcode facebook

我无法从 Facebook 用户检索电子邮件 ID。我正在获取电子邮件的许可并记录以进行验证,因为它正在工作。但它不起作用。我不确定我去了哪里错了。挣扎了很长时间。任何人都可以帮助我。以下是我的代码。提前致谢。

-(IBAction)btnClicked{
  // Initialize a session object
  FBSession *session = [[FBSession alloc] init];
  // Set the active session
  [FBSession setActiveSession:session];
  // Open the session
  [session openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView
        completionHandler:^(FBSession *session,
                            FBSessionState status,
                            NSError *error) {
           // Respond to session state changes,
            // ex: updating the view
            if ([session isOpen]) {
                // Session is open
                NSArray *permissions = [NSArray arrayWithObjects:@"email", nil];
                [FBSession openActiveSessionWithReadPermissions:permissions
                                                   allowLoginUI:NO
                                              completionHandler:
                 ^(FBSession *session,
                   FBSessionState state, NSError *error) {

                     [self sessionStateChanged:session state:state error:error];
                 }];
                NSLog(@"Session is open");
                [self populateDetails];

            } else {
                // Session is closed
                NSLog(@"Session is closed");
            }
        }];
}
-(void)populateDetails{
    if (FBSession.activeSession.isOpen) {

    [[FBRequest requestForMe]startWithCompletionHandler:^(FBRequestConnection *connection,NSDictionary<FBGraphUser> *user,  NSError *error) {
        if(!error){

            NSLog(@"email %@",[user objectForKey:@"email"]);
    }
    else
    {
        NSLog(@"NW Issue");
    }
  }
}

最佳答案

检查这个

if (FBSession.activeSession.isOpen) {
        [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
             if (!error) {
                 self.nameLabel.text = user.name;
                 self.emailLabel.text = [user objectForKey:@"email"];
             }
         }];
    }




NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];
[FBSession sessionOpenWithPermissions:permissions completionHandler:
 ^(FBSession *session, FBSessionState state, NSError *error) {
     [self facebookSessionStateChanged:session state:state error:error];
 }];

关于ios - FB 用户 emailID 未获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19241222/

相关文章:

ios - objective-c MKMapView 以用户位置为中心

objective-c - 泄露报告看似不相关的问题

objective-c - if 条件如何与多个表达式一起使用

ios - 在 Xcode 11 中添加对本地 swift 包的依赖

ios - 所有目标的 FaSTLane increment_build_number?

ios - 来自 appDelegate 时的 performSegue 错误

ios - 由于一百万张图片,iOS 通用应用程序中的尺寸很大

ios - Swift CocoaPod 可点击但 Xcode 找不到

ios - 我怎样才能得到像下面的 Apple Music 播放列表概述这样的 ListView ?

ios - 在 MapKit Swift 中禁用 Mylocation Marker Tap