2013-04-05 96 views
22

嗨,我正在使用ios6的Facebook登錄,我收到此錯誤爲本機彈出該操作無法完成。 (com.facebook.sdk錯誤2.)ios6

該操作無法完成。 (com.facebook.sdk錯誤2.)

這是使用的情景。 (我在simularor上運行這個

我已經通過設置登錄到Facebook應用程序,我試圖登錄到我的應用程序和它的工作正常。

然後我從設置中註銷Facebook,然後再與不同的用戶登錄。然後我試圖登錄到應用程序。我收到這個錯誤。

我用命令

[FBSession.activeSession closeAndClearTokenInformation];

但是沒有用試圖登錄電子在應用軟件中。

facebook應用中的包標識符與我的ios應用中的相同。

這是我用於登錄

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

任何幫助表示讚賞的代碼。

這是我收到

Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x9535330 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

注意 我得到了一個不同的occation相同錯誤的錯誤。當時它在我的代碼中的錯誤

而不是給許可作爲

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",@"birthday", nil];

我被錯做它作爲

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email,birthday", nil];

SOLUTION 即使修正後代碼,我得到了同樣的錯誤。我必須從ios設置屏幕註銷並登錄Facebook。一旦我做到了這一點,正確的代碼從未造成任何問題。請注意,該問題僅出現在先前執行錯誤代碼的設備上。請注意是什麼導致了這個問題, 希望這個信息可以幫助別人

+0

以下鏈接解決了我的問題。 http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device 謝謝, – 2013-04-05 17:16:53

回答

9

檢查你的項目的Bundle標識符,你給你的應用程序的Bundle標識符,在developer.facebook.com上創建它們是否相同。

+0

這些都是一樣的。謝謝 – 2013-04-05 10:35:27

+0

這解決了這個問題http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device – 2013-04-05 17:17:54

+0

這與App ID相同嗎? – coolcool1994 2013-06-12 06:03:07

0

我有一個類似的問題。當我將fb用戶從設置切換時出現錯誤。 Facebook authorization fails on iOS6 when switching FB account on device這解決了我的問題

+8

請考慮添加*該問題的哪一部分*解決了您的問題。它包含三個答案,其中非答覆已被接受。廣泛地指出另一個問題作爲答案是沒有用的。 – 2013-04-28 20:49:35

23

這爲我工作:

  • 轉到你的iPhone的設置應用程序。
  • 打開你的Facebook設置
  • 向下滾動到你的應用程序,並確保你的應用程序允許facebook 互動。

這可能發生在任何設備上,因此在您的應用程序中,您將必須確保正確處理此錯誤。 我想你會給用戶反饋爲什麼用Facebook登錄失敗,並要求用戶檢查他們的設備上的Facebook設置。

- (void)facebookSessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: 
      // handle successful login here 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      [FBSession.activeSession closeAndClearTokenInformation]; 

      if (error) { 
       // handle error here, for example by showing an alert to the user 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Could not login with Facebook" 
                   message:@"Facebook login failed. Please check your Facebook settings on your phone." 
                   delegate:nil 
                 cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
       [alert show]; 
      } 
      break; 
     default: 
      break; 
    } 
+0

警報視圖應該封裝在if(error){}塊中,現在每次用戶註銷時都會顯示警報,實際上只有當出現錯誤時纔會顯示警報。 – neverbendeasy 2013-12-12 07:00:46

+0

謝謝!我在答案中改變了它。 – Bocaxica 2013-12-14 14:46:09

+0

非常感謝你。優秀的解釋:) – Karun 2014-09-22 09:35:25

8

此錯誤的另一個潛在原因:試圖獲得許可在沙盒模式下的Facebook應用程序,當Facebook的用戶沒有在應用程序的管理員,開發人員和測試人員列出。

0

我有同樣的問題,並花了一整天的時間來找出問題。 Facebook SDK的這個錯誤信息非常模糊。由於在MyApplication中openURL:方法被覆蓋,所以我遇到了這個問題。我刪除了覆蓋的方法和Facebook登錄工作正常。

+0

您是否確定通過調用返回'[FBAppCall handleOpenURL:url sourceApplication:sourceApplication]''來實現'openURL:'? Facebook SDK需要這樣才能正常工作,但只要您這樣做,您仍應該能夠實現openURL以用於其他用途。 – davidgoli 2014-03-01 02:30:47

0

對我來說問題是無效的權限 - 我要求「生日」,而不是「user_birthday」。這是一個恥辱,錯誤信息不是至少最低限度的描述 - 只是說「權限無效」,而不是錯誤代碼2會爲我節省了很多時間。

3

我通過在登錄時傳遞nil權限來解決我的問題。

[FBSession openActiveSessionWithReadPermissions:nil 
             allowLoginUI:YES 
            completionHandler: 
相關問題