2013-02-04 65 views
2

我知道这似乎是一个重复的问题,但我已经看过堆栈溢出相关的每一个问题,我仍然收到以下错误:Facebook的SDK 3.1.1和iOS 6.1登录错误

Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. 
(com.facebook.sdk error 2.)" UserInfo=0x1ecbf8e0  
{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason} 

这就是NSError的整个NSLog的..

我按照认证信教程;

  • 在developers.facebook.com我有我的应用程序中的原生iOS应用,并把我的包ID
  • 在我的info.plist我已经包括URL类型>项目0> URL方案>项目0> fb123456和FacebookAppID = 123456,键。

我正在尝试使用以下代码进行身份验证;

[FBSession openActiveSessionWithReadPermissions:permissions 
           allowLoginUI:YES 
          completionHandler: 
^(FBSession *session, 
    FBSessionState state, NSError *error) { 
    [self sessionStateChanged:session state:state error:error]; 
}]; 

权限设置为零。

我也有以下在我的应用程序代理设置

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
[FBSession.activeSession handleDidBecomeActive]; 
} 

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
[FBSession.activeSession close]; 
} 

- (BOOL)application:(UIApplication *)application 
     openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
    annotation:(id)annotation { 
return [FBSession.activeSession handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{ 
return [FBSession.activeSession handleOpenURL:url]; 
} 

有一两件事我注意到的是,该错误消息命中我的屏幕附近瞬间后,我松开按钮,我把手机进入飞行模式,速度是一样的,我在想这个命令甚至不会离开手机,然后前往facebook服务器。我肯定有网络连接,因为我在facebook电话前访问google api时刻。

编辑:

如果我使用下面

[FBSession openActiveSessionWithPermissions:nil allowLoginUI:YES completionHandler: 
^(FBSession *session, 
    FBSessionState state, NSError *error) { 
    [self sessionStateChanged:session state:state error:error]; 
}]; 

过时的方法,我能够与Facebook进行身份验证。

返回的会话是

<FBSession: 0x20038450, state: FBSessionStateOpen, loginHandler: 0x2006ba90, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1ed4ce30>, expirationDate: 2013-04-08 16:25:19 +0000, refreshDate: 2013-02-07 16:25:19 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)> 

从与更新3.1.1方法

<FBSession: 0x1e8970b0, state: FBSessionStateClosedLoginFailed, loginHandler: 0x0, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1d5853b0>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)> 

我假设失踪loginHandler对象在成功登录时生成的失败尝试这个环节比较。

虽然这可以让我继续使用我的登录令牌开发应用程序的其余部分,但我不能接受现场发送我的应用程序。有谁知道为什么会发生这种情况/可能是由于什么原因造成的?

+0

我刚刚尝试创建一个全新的Facebook应用程序,因为有我的帐户有一些奇怪的事情在那里,但没有,这还没有解决这个问题,我相信现在facebook sdk请求甚至不会离开我的设备,反应太快。 – Bongeh

+0

我已经尝试重置所有证书和配置文件以确保在这方面没有任何问题,所有配置都是正确配置的,所以也不是这样。我希望在Facebook的开发者区域有一些关于这个错误的文档.. – Bongeh

+0

如果我使用不赞成使用的方法,我可以登录,但这是不可接受的,我将更新我的帖子与我的更改。 – Bongeh

回答

14

我有两个实例相同的错误。

  1. 当您的iPhone中的设置 - > Facebook - > YourAppName中的开关未打开时,为了让您的应用程序使用Facebook帐户。在这种情况下,我显示一条提醒,要求用户打开应用程序的开关。

  2. 当您的应用程序的包标识符与您在应用程序的Facebook应用程序设置页面上指定的包标识符不匹配时。

既然你出现错误,即使没有互联网连接,我觉得应该是情况1.

+1

您先生是天赐之物!它是设置 - > Facebook - > AppName开关。多么令人烦恼,你会认为Facebook sdk会输入一个错误信息,可能会指出你正确的方向。 – Bongeh