Mra*_*mar 11 facebook ios-simulator facebook-login ios10 xcode8
我用facebook登录我的应用程序.尝试使用Facebook登录iOS 10,iPhone模拟器6s.
-canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
10814 : kLSApplicationNotFoundErr
-10814 No application in the Launch Services database matches the input criteria.
Run Code Online (Sandbox Code Playgroud)
我正在使用facebook sdk版本4.13.1. 在XCode 8之前,相同的代码工作正常.
任何帮助?提前致谢.
Pri*_*dya 12
错误状态10814基本上发生时cantOpenUrl,它被facebook调用url使用参数fbauth2:/.在这个线程的建议中,打印发生在这个函数中,所以你不能做任何事情
Apple改变了使用IOS 10的方式.要解决这个问题,你可以去
目标>功能>启用Keychain共享
张贴在这篇文章中的论坛developor问题
问题在于FBSDLoginManager,永远不会调用完成处理程序
所以在debuging中,作者在"logInWithBehavior:(FBSDKLoginBehavior)loginBehavior"中将断点放在" FBSDKLoginManager.m"中,并找出weakSelf获取nil并且无法调用"logInWithBehavior:serverConfiguration: serverConfigurationLoadError:"
- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior
{
__weak __typeof__(self) weakSelf = self;
[FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *loadError) {
[weakSelf logInWithBehavior:loginBehavior serverConfiguration:serverConfiguration serverConfigurationLoadError:loadError];
}];
}
Run Code Online (Sandbox Code Playgroud)
解决方案1:
将FBSDKLoginManager变量更改为属性,而不是将其用作函数变量.确保FBSDKLoginManager变量必须保持活动状态,直到完成处理程序调用
你可以打开-Wimplicit-retain-self警告,如果你在一个块中意外地引用了自己,就会收到警告.在Github问题中发帖
解决方案2:
您可以将这些添加到您的plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Run Code Online (Sandbox Code Playgroud)
并按如下方式更改AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
{
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}
Run Code Online (Sandbox Code Playgroud)
作者建议 在此之后你可以在XCode8上运行你的swift3,SDK,ios10
如果Google Analytics正在通过设置在视图控制器顶部添加自己的控制器,请检查作者是否一提
在-Info.plist中将"FirebaseAppDelegateProxyEnabled"设置为"NO"解决了这个问题.
.
完全归属于论坛和论坛中提到的作者
请确保您的Info.plist对应于https://developers.facebook.com/docs/ios/ios9的2. Whitelist Facebook Apps部分
对于 iOS Facebook SDK v.4.13,它应该包含
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Run Code Online (Sandbox Code Playgroud)
这些要求是针对iOS 9.x引入的。
| 归档时间: |
|
| 查看次数: |
8539 次 |
| 最近记录: |