2014-07-02 72 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%的設備上工作,但我正在使用以前的開發者的代碼,結果發現其中有不少地雷。我通過創建一個塊完成處理程序並在登錄過程完成時使用它來解決這個問題。