2013-02-04 84 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