2014-07-02 71 views
0

我正在用Facebook 2.0的登录API生气。对我(开发人员)和其他开发人员来说,它工作得很好。但对于几个用户来说,登录失败。对于登录过程,我做:Facebook iOS登录API 2.0(SDK 3.15.1)

[FBSession openActiveSessionWithReadPermissions:self.readPermissions 
             allowLoginUI:YES 
            completionHandler:^(FBSession *session, FBSessionState status, NSError *error) 
    { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      _self.loginInProcess = NO; 
      [_self _setSessionState:status error:error]; 
     }); 
    }]; 

通常,FB应用程序打开,用户可以选择接受/拒绝访问。但是,对于某些用户而言,此屏幕从不出现。相反,应用程序被切换(如正常),但只要它到达Facebook应用程序(我认为...)它立即切换回源应用程序,但失败没有错误。因为我无法在任何自己的设备上复制该问题,所以我无法确定,但似乎从不会调用完成处理程序。因此,该应用程序处于等待Facebook批准/拒绝未提交请求的状态。

值得注意的是,我都在应用程序的委托正确的电话:

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 

    BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 

    return wasHandled; 
} 

有没有人处理这样的事?

回答

0

因此,事实证明Facebook正在返回正确的数据。为了发现这一点,我必须创建一堆UIAlertView's,推出一个新的测试版,并让其中一个用户向我发送这些警报的屏幕截图,以便我可以看到究竟发生了什么......关于最接近的事情我可以在iPhone上进行远程调试。

最后,事实证明,我设置的KVO没有开火(注意登录过程完成)。我仍然不知道为什么它没有解雇。它在95%的设备上工作,但我正在使用以前的开发者的代码,结果发现其中有不少地雷。我通过创建一个块完成处理程序并在登录过程完成时使用它来解决这个问题。