web-dev-qa-db-de.com

Facebook Login Problem mit iOS 10

Ich benutze Facebook, um mich in meine Anwendung einzuloggen. Versuch, sich mit Facebook über iOS 10, iPhone Simulator 6s anzumelden.

-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.

Ich verwende facebook sdk version 4.13.1. Vor XCode 8 funktionierte derselbe Code einwandfrei. 

Irgendwelche Hilfe? Vielen Dank im Voraus.

10
Mradul Kumar

Der Fehlerstatus 10814tritt im Wesentlichen auf, wenn cantOpenUrl verwendet wird. Diese Variable wird von der facebook zum Aufruf der url mit den Argumenten fbauth2:/.) Verwendet. Wie vorgeschlagen wird, ist dieser Thread , der Druck erfolgt in diesem Bereich Funktion, damit Sie nicht viel damit tun können

Apple hat die Arbeitsweise mit IOS 10 geändert. Um dieses Problem zu beheben, können Sie das Problem beheben

Ziele> Funktionen> Aktivieren Keychain Sharing

Hier ist ein Screenshot aus dem gleichen Thread, der über verlinkt ist. enter image description here

Wie in diesem Post gepostet die Foren Entwickler Ausgaben

Das Problem liegt beim FBSDLoginManager, der Completion-Handler wird nie aufgerufen

in debuging, der author setze den Haltepunktin "FBSDKLoginManager.m") um "logInWithBehavior: (FBSDKLoginBehavior) loginBehavior"und finde heraus, dass WakeSelf nil wird und nicht Aufruf von "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];  
      }];  
    }

Lösung 1: 

Ändern Sie die Variable FBSDKLoginManager als Eigenschaft und nicht als Funktionsvariable. Stellen Sie sicher, dass FBSDKLoginManager variable muss am Leben bleibenbis der Aufruf des Completion Handler

Sie können die Warnung -Wimplicit-keep-self aktivieren, um eine Warnung zu erhalten, wenn Sie in einem Block versehentlich auf self verweisen. In den Github-Ausgaben

Lösung 2:

Sie können diese zu Ihrer Liste hinzufügen

<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>

und auch das AppDelegatewie folgt ändern

    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)
}

wie von author vorgeschlagen. Danach können Sie Ihr Swift3, SDK, ios10 auf XCode8 ausführen.

Überprüfen Sie auch die Erwähnung des Autors , ob der Google Analyticsseinen eigenen Controller oben in Ihrem View-Controller hinzugefügt hat, indem Sie die Einstellung festlegen 

Durch Setzen von "FirebaseAppDelegateProxyEnabled" auf "NO" in -Info.plist wurde das Problem gelöst.

.

Die vollständige Zuordnung geht an das Forum und die im Forum genannten Autoren

11
Pritish Vaidya

Stellen Sie sicher, dass Sie die Schlüsselkettenfreigabe unter Funktionen-> Schlüsselkettenfreigabe Aktiviert haben. Aktivieren Sie die Schlüsselkettenfreigabe 

1

Stellen Sie sicher, dass Ihr Info.plist 2 entspricht. Whitelist Facebook Apps Abschnitt von https://developers.facebook.com/docs/ios/ios9

Für iOS Facebook SDK v.4.13 sollte es enthalten

<key>LSApplicationQueriesSchemes</key>
<array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
</array>

Diese Anforderungen wurden für iOS 9.x eingeführt.

0

Fügen Sie diese Zeile in Ihre Funktion didFinishLaunchingWithOptions in appDelegate ein

FBSDKApplicationDelegate.sharedInstance (). Application (Anwendung, didFinishLaunchingWithOptions: launchOptions)

0
valentina