2013-05-19 83 views
4

我正在嘗試設置適用於iOS的Facebook SDK 3.5。我已經得到它的工作,但它現在正在崩潰。當用戶通過默認的iOS facebook設置(AKA而不是來自應用商店的Facebook應用)登錄時,崩潰似乎只發生。當點擊Facebook「登錄」視圖時,該應用程序崩潰。Facebook iOS崩潰

崩潰是:錯誤:[NSError fberrorShouldNotifyUser]:無法識別的選擇器發送到實例。

我已經做了一些Research和一些人建議將-Objc放到「其他鏈接器標誌」。我沒有那麼確切,但我有類似的想法。我需要其他庫的其他選項。這裏是我的選擇:

enter image description here

誰能告訴我,如果這導致了問題?如果沒有,有人知道究竟是什麼造成了這次事故?謝謝!

編輯

這似乎錯誤是在一開始,這種情況發生的方法「如果」

- (void)loginView:(FBLoginView *)loginView 
    handleError:(NSError *)error { 
NSString *alertMessage, *alertTitle; 
if (error.fberrorShouldNotifyUser) // CRASH HERE { 
// If the SDK has a message for the user, surface it. This conveniently 
// handles cases like password change or iOS6 app slider state. 
alertTitle = @"Facebook Error"; 
alertMessage = error.fberrorUserMessage; 
} else if (error.fberrorCategory == FBErrorCategoryAuthenticationReopenSession) { 
// It is important to handle session closures since they can happen 
// outside of the app. You can inspect the error for more context 
// but this sample generically notifies the user. 
alertTitle = @"Session Error"; 
alertMessage = @"Your current session is no longer valid. Please log in again."; 
} else { 
// For simplicity, this sample treats other errors blindly. 
alertTitle = @"Unknown Error"; 
alertMessage = @"Error. Please try again later."; 
NSLog(@"Unexpected error:%@", error); 
} 
} 
+0

看到這個問題:http://stackoverflow.com/q/15640510/1402846 – Pang

回答

1

如果你已經在使用使用ARC項目,你不」 t需要添加此鏈接器標誌。

請確保在您的代碼中導入了NSError+FBError.h文件,這就是從中抽取該類別的位置。

從技術上講,如果您要導入<FacebookSDK/FacebookSDK.h>,則包含該類別定義。另外,如果您的代碼找不到該頭文件,請確保FacebookSDK.Framework包含在目標摘要頁面中的鏈接框架和庫列表中。

+0

感謝您的回覆!有些項目正在使用ARC,有些不是我爲什麼那麼做。那好吧?儘管如此,我並沒有使用ARC。我正在導入,當我在finder中單擊show時,它將我帶到FacebookSDK文件夾,所以我相信這很好。我無法找到的唯一文件是NSError + FbError.h文件。不知道您是否打算將它們分開,但無法單獨找到它們。還有其他建議嗎?謝謝 – Teddy13

+0

該文件應該在〜/ Documents/FacebookSDK/Headers中。在Xcode中,如果您展開FacebookSDK.framework,是否列出紅色的文件?當您將框架文件拖動到項目中時,是否複製了框架文件? –

+0

我不記得我是否簡單地拖動或者如何導入它。我道歉。但是當我展開FacebookSDK.framework時,我看到一個藍色的「Header」文件夾,並且沒有任何文件是紅色的,我假設它們是正確添加的。 – Teddy13

0

當設備從Facebook登錄返回到您的應用時,您的應用必須在後臺運行。我通過打開「快速應用切換」來修復此錯誤。它的目標信息選項卡下的設置稱爲「應用程序不在後臺運行」。它應該是NO。

2

我有同樣的問題。根據這一

https://developers.facebook.com/docs/ios/errors/#prerequisites

您需要設置-ObjC標誌或使用FBErrorUtility代替fberror*

我剛添加的-ObjC標誌和它工作得很好。

+0

通過在所有引用的庫中包含所有Objective-C對象文件(無論它們是否在應用程序中使用),'-ObjC'標誌可能會不必要地膨脹最終的二進制文件。它應該被視爲最後的手段,而不是使事情發揮作用的神奇旗幟。相反,請考慮'-force_load'鏈接器標誌明確包含未正確鏈接的單個庫。 – devios1