您好我刚刚将我的应用程序升级到iOS 9并使用Facebook的最新SDK(版本4.6)进行Facebook登录。
我正在使用自定义登录按钮,因此使用LoginManager类。使用之前的版本它工作正常但现在我的应用程序崩溃,每当我按下登录按钮说“无法识别的选择器发送到实例”
以下是我在GameScene课程中使用的用于登录的代码。
var fbLogin = FBSDKLoginManager()
func onClickFBLogin(){
let vc = self.view?.window?.rootViewController
fbLogin.logInWithReadPermissions(["public_profile"] as [AnyObject], fromViewController: vc, handler: {(result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
if(error != nil){
print("Facebook login error \(error)")
} else if(result.isCancelled){
print("Facebook login cancelled")
} else{
print("facebook login successful")
if(self.isSaveMeButtonPressed){
print("facebook login successful")
}
}
})
}
该应用程序因以下登录Xcode而崩溃。
[FBSDKLoginManager logInWithReadPermissions:fromViewController:handler:]:无法识别的选择器发送到实例0x7f82e51251e0
任何人都面临同样的问题?或者有人可以帮我解决这个问题?
提前致谢。
答案 0 :(得分:1)
更新Facebook SDK时出现问题。似乎Facebook通过提供包文件改变了它在Documents文件夹中安装SDK的方式,但现在它提供了一个不可安装的zip文件。因此我只更换了〜\ Documents \ FacebookSDK文件夹中的现有文件。之后,看起来Xcode占用了更新代码的一部分,有些仍然保持不变。
我从项目中删除了所有框架,并重新添加了我们在Xcode中添加框架的常用方法。现在工作正常。
Facebook应该更新有关如何更新到更新SDK的文档。
答案 1 :(得分:0)
对于iOS 9,您可以向info.plist添加更多密钥。此错误可能与此有关。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key> <true/>
<key>NSExceptionRequiresForwardSecrecy</key> <false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key> <true/>
<key>NSExceptionRequiresForwardSecrecy</key> <false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key> <true/>
<key>NSExceptionRequiresForwardSecrecy</key> <false/>
</dict>
</dict>
</dict>
答案 2 :(得分:0)
另一个可能的问题是CocoaPod的facebook Pod安装。 从您项目中的Podfile中删除pod,运行pod install,您将看到从项目中删除了facebook pod。 我使用了他们网站上的facebook SDK,并手动导入了框架(并使用他们的说明来完成facebook SDK集成)。 重新编译并再次运行您的应用...
这是我得到的完整错误:
Checklists[14748:612592] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FBSDKLoginManager isAuthenticationURL:]: unrecognized selector sent to instance 0x6000002887f0'
*** First throw call stack:
(
0 CoreFoundation 0x000000010999212b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010a55bf41 objc_exception_throw + 48
2 CoreFoundation 0x0000000109a13024 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000109914f78 ___forwarding___ + 1432
4 CoreFoundation 0x0000000109914958 _CF_forwarding_prep_0 + 120
5 FBSDKCoreKit 0x00000001096e58b3 -[FBSDKApplicationDelegate openURLWithSafariViewController:sender:fromViewController:handler:] + 355
6 Checklists 0x0000000108b513ed -[FBSDKLoginManager(Native) performBrowserLogInWithParameters:handler:] + 654
7 Checklists 0x0000000108b50450 -[FBSDKLoginManager logInWithBehavior:] + 483
8 Checklists 0x0000000108b50250 -[FBSDKLoginManager logInWithPermissions:handler:] + 312
9 Checklists 0x0000000108b4ecde -[FBSDKLoginManager logInWithReadPermissions:fromViewController:handler:] + 280
10 Checklists 0x0000000108b4b757 -[FBSDKLoginButton _buttonPressed:] + 1662
11 UIKit 0x000000010b504972 -[UIApplication sendAction:to:from:forEvent:] + 83
12 UIKit 0x000000010b683c3c -[UIControl sendAction:to:forEvent:] + 67
13 UIKit 0x000000010b683f59 -[UIControl _sendActionsForEvents:withEvent:] + 450
14 UIKit 0x000000010b682e86 -[UIControl touchesEnded:withEvent:] + 618
15 UIKit 0x000000010b57a807 -[UIWindow _sendTouchesForEvent:] + 2807
16 UIKit 0x000000010b57bf2a -[UIWindow sendEvent:] + 4124
17 UIKit 0x000000010b51f365 -[UIApplication sendEvent:] + 352
18 UIKit 0x000000010be6ba1d __dispatchPreprocessedEventFromEventQueue + 2809
19 UIKit 0x000000010be6e672 __handleEventQueueInternal + 5957
20 CoreFoundation 0x0000000109935101 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
21 CoreFoundation 0x00000001099d4f71 __CFRunLoopDoSource0 + 81
22 CoreFoundation 0x0000000109919a19 __CFRunLoopDoSources0 + 185
23 CoreFoundation 0x0000000109918fff __CFRunLoopRun + 1279
24 CoreFoundation 0x0000000109918889 CFRunLoopRunSpecific + 409
25 GraphicsServices 0x0000000110ae99c6 GSEventRunModal + 62
26 UIKit 0x000000010b5035d6 UIApplicationMain + 159
27 Checklists 0x0000000108b49747 main + 55
28 libdyld.dylib 0x000000010e45dd81 start + 1
29 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException