2016-03-07 72 views
0

我有我的应用程序自定义的FB登录按钮按下时运行此代码:Facebook登录的iOS不返回

[login logInWithReadPermissions: @[@"public_profile",@"email",@"user_friends"] fromViewController:vc handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
     if (error) { 
      NSLog(@"Process error"); 
     } else if (result.isCancelled) { 
      NSLog(@"Cancelled"); 
     } else { 
      if ([FBSDKAccessToken currentAccessToken]) { 
       // User is logged in, do work such as go to next view controller. 
       NSDictionary *parameters = @{@"fields":@"email"}; 

       [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:parameters] 
        startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
         NSLog(@"fetched user:%@", result); 
        }]; 

      } 
      NSLog(@"Logged in"); 
     } 

    }]; 

的Safari浏览器视图 - 控制弹出窗口,然后我按OK: enter image description here

这则转到一个空白页: enter image description here

当我按“完成”它触发NSLog(@"Cancelled");,我无法访问邮件/个人资料等

+0

只检查fb文档https://developers.facebook.com/docs/ios/getting-started#delegate – jose920405

回答

2

检查你的AppDelegate和实施

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
{ 
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 
} 

这个方法负责返回正确的结果和关闭Safari浏览器。检查您的Info.plist文件 - 必须配置Facebook方案(fbYOUR_FB_APP_ID)才能正常登录流程工作。

请注意,上面的方法已被弃用。新版本是application:openURL:options:,如果你已经实现了 - 上面不会被调用。由于FacebookSDK在FBSDKApplicationDelegate中仍然使用旧方法,因此您可以坚持旧方法或尝试将新方法的参数转换为旧方法以用于FB目的。

+0

谢谢,我只是一个白痴 - 我有这条线被注释掉了! – Halpo