Facebook SDK在应用程序代理中崩溃

7

以下是我如何复制该错误的步骤。这是我的登录代码:

@IBAction func FBLoginAction(_ sender: AnyObject) {
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.browser
    fbLoginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self) { (result, error) -> Void in
        if (error != nil) {
            return
        }
    }
 }

如果我登录两次,然后再次运行应用程序,这行代码会在AppDelegate中崩溃。
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

如果我只登录一次,然后再次运行应用程序,就不会发生崩溃。崩溃的完整堆栈如下:

2016-12-09 10:51:28.893 Persistence[73125:897290] -[NSConcreteMutableData isEqualToString:]: unrecognized selector sent to instance 0x60000004ec40 2016-12-09 10:51:28.903 Persistence[73125:897290] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableData isEqualToString:]: unrecognized selector sent to instance 0x60000004ec40' *** First throw call stack: 0 CoreFoundation 0x00000001085e634b exceptionPreprocess + 171 1 libobjc.A.dylib 0x0000000107c2a21e objc_exception_throw + 48 2 CoreFoundation 0x0000000108655f34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 3 CoreFoundation 0x000000010856bc15 forwarding + 1013 4 CoreFoundation 0x000000010856b798 _CF_forwarding_prep_0 + 120 5 FBSDKCoreKit 0x000000010700aa5a -[FBSDKAccessTokenCacheV4 fetchAccessToken] + 202 6 FBSDKCoreKit 0x000000010700902c -[FBSDKAccessTokenCache fetchAccessToken] + 92 7 FBSDKCoreKit 0x0000000107017d2d -[FBSDKApplicationDelegate application:didFinishLaunchingWithOptions:] + 125 8 Persistence 0x000000010572bcb7 _TFC11Persistence11AppDelegate11applicationfTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVs10DictionaryVSC29UIApplicationLaunchOptionsKeyP____Sb + 727 9 Persistence 0x000000010572cfb4 _TToFC11Persistence11AppDelegate11applicationfTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVs10DictionaryVSC29UIApplicationLaunchOptionsKeyP____Sb + 180 10 UIKit 0x00000001091110be -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 290 11 UIKit 0x0000000109112a43 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4236 12 UIKit 0x0000000109118de9 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1731 13 UIKit 0x0000000109115f69 -[UIApplication workspaceDidEndTransaction:] + 188 14 FrontBoardServices 0x000000010d698723 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 24 15 FrontBoardServices 0x000000010d69859c -[FBSSerialQueue _performNext] + 189 16 FrontBoardServices 0x000000010d698925 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 17 CoreFoundation 0x000000010858b311 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 18 CoreFoundation 0x000000010857059c __CFRunLoopDoSources0 + 556 19 CoreFoundation 0x000000010856fa86 __CFRunLoopRun + 918 20 CoreFoundation 0x000000010856f494 CFRunLoopRunSpecific + 420 21 UIKit 0x00000001091147e6 -[UIApplication _run] + 434 22 UIKit 0x000000010911a964 UIApplicationMain + 159 23 Persistence 0x000000010572d97f main + 111 24 libdyld.dylib 0x000000010b3a368d start + 1 libc++abi.dylib: terminating with uncaught exception of type NSException
3个回答

10

我回退到 Facebook SDK 的 4.17.0 版本,不再出现崩溃。


我也遇到了同样的崩溃。只是确认一下,崩溃的版本是4.18.0吗? - AmitP
这太荒谬了。无论如何感谢您提供的解决方案,希望Facebook发布一个最新的基于Swift的SDK,具有完整的功能... - Tamás Sengel
似乎在4.19.0版本中已经修复。 - paiv

2
如果您正在使用Facebook SDK的4.18.0版本,请将其更新至4.19.0或当前版本,这样就不会出现崩溃问题。

0

确保您的Podfile中没有受限制版本的FBSDK,像这样:

pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

然后执行 pod update 命令。不要加上 --no-repo-update 参数,以便更新本地 specs 仓库。

最新的本地 specs 仓库将让您能够下载最新版本的 FBSDK,即 4.19.0 版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接