iOS 10的Facebook登录问题

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"解决了这个问题.

.

完全归属于论坛和论坛中提到的作者


And*_*kyi 0

请确保您的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引入的。

  • 您能帮忙运行基于 Web 的登录视图吗?发生的情况是:我运行应用程序,按 facebook 按钮。将打开一个基于网络的视图,并告知您已经登录 Facebook 使用此应用程序。然后我点击“确定”,视图关闭,Facebook 响应错误 308 出现。有什么帮助吗? (2认同)