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.
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.
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
Stellen Sie sicher, dass Sie die Schlüsselkettenfreigabe unter Funktionen-> Schlüsselkettenfreigabe Aktiviert haben. Aktivieren Sie die Schlüsselkettenfreigabe
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.
Fügen Sie diese Zeile in Ihre Funktion didFinishLaunchingWithOptions in appDelegate ein
FBSDKApplicationDelegate.sharedInstance (). Application (Anwendung, didFinishLaunchingWithOptions: launchOptions)