webentwicklung-frage-antwort-db.com.de

So verwenden Sie das Facebook iOS SDK auf iOS 10

Ich versuche, Xcode 8 zu verwenden, um eine App mit Facebook-Login mit Swift 3 zu erstellen. Wenn ich iOS Simulator 9.3 zurückschalte, funktioniert es. In iOS 10 erhalte ich diese Fehlermeldung: 

""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)"

und

Optional(Error Domain=com.facebook.sdk.login Code=308 "(null)")

Hat jemand eine Lösung dafür?

Anmerkung 1 :

Nach dem Debuggen ist dieses Problem das FBSDK-Update expect_challange. Funktion SecItemUpdate in security.framework funktioniert nicht. Dies ist ein Problem von IOS 10

102
trquoccuong

Error OSStatus -10814 tritt auf, wenn canOpenURL:keine Anwendung findet, die diese URL öffnen kann (tatsächlich versucht Facebook, seine Anwendung durch Aufruf von canOpenURL: mit dem Argument "fbauth2: /") zu finden. Das Drucken erfolgt innerhalb der Funktion, sodass Sie damit nichts anfangen können. Wenn Sie jedoch Ihre Anwendung auf einem Gerät mit installierter Facebook-App ausführen, wird dieser Fehler nicht angezeigt.

Fehler 308 tritt aufgrund der Situation auf, wenn der im Schlüsselbund gespeicherte Wert nicht gleich dem Wert ist, der in den Facebook-Abschlussparametern gespeichert ist (weitere Informationen finden Sie in -[FBSDKLoginManager completeAuthentication:expectChallenge:]).

Dies geschieht, weil Apple die Arbeitsweise mit dem Schlüsselbund in iOS 10 geändert hat. Um dieses Problem zu beheben, sollten Sie einfach zu Ziele -> Funktionen gehen und die Schlüsselbundfreigabe aktivieren (dies ermöglicht den Zugriff auf den Schlüsselbund für Ihre App): image

Wenn Sie Xamarin verwenden (lesen Sie diesen Link für weitere Informationen, danke @dynamokaj):

Stellen Sie einfach sicher, dass Sie den Schlüsselbundzugriff in Entitlements und .__ aktivieren. Wählen Sie auch die Berechtigungen für Simulator- (Debug-) Builds aus. Standardmäßig Dies ist nicht festgelegt.

198
Roman Ermolov

Das gleiche Problem hatte ich in meiner App. Ich habe viele Lösungen geprüft, funktionierte aber nicht für mich. Ich habe dieses Problem mit der folgenden Methode behoben.

Gehen Sie zu diesem Link Wählen Sie Ihre App aus und konfigurieren Sie Ihren info.plist

import und fügen Sie diesen Code in Ihre AppDelegate ein

import FBSDKCoreKit
import FBSDKLoginKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}
5
ZAFAR007

Der Hauptgrund, warum Sie den folgenden Fehler erhalten,

canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)

ist, dass auf Ihrem iOS-Simulator die Facebook-Anwendung nicht installiert ist. Bis Sie die Anwendung auf Ihrem iOS-Simulator installieren, wird der Fehler weiterhin angezeigt. Versuchen Sie, Ihre iOS-Anwendung auf einem bereitgestellten iOS-Gerät auszuführen, auf dem Facebook installiert ist. Die Fehlermeldung wird nicht mehr angezeigt. Hoffe das hilft!

4
umarqattan

In meinem Fall war das Update *:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 

  // First, handle Facebook URL open request
  if let fbSDKAppId = FBSDKSettings.appID(), url.scheme!.hasPrefix("fb\(fbSDKAppId)"), url.Host == "authorize" { 
    let shouldOpen: Bool = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
    return shouldOpen 
  } 

  // After it, handle any other response (e.g. deep links)
  handlerOtherUrls(url: url) 
  return true 
}

* Wie von @MoridinBG empfohlen auf Github-Seite von Facebook SDK

3
Ruben Marin

Dieser Fehler kann auch auftreten, wenn Sie FBSDKCoreKit oder FBSDKLoginKit Version 4.39.0 verwenden. In dieser Version des SDK ist ein Fehler aufgetreten. Aktualisieren Sie auf 4.39.1 oder höher, um das Problem zu beheben. Details hier .

Als Randbemerkung haben andere Benutzer erwähnt, dass dieser Fehler angezeigt wird, wenn Facebook nicht im Simulator installiert ist. Das stimmt, aber das SDK sollte automatisch auf die Web-Anmeldemethode zurückgreifen, wenn die App nicht installiert ist. Wenn dies nicht der Fall ist, kann dies durch ein anderes Problem verursacht werden, z. B. fehlende/falsch konfigurierte Werte in Ihrer Info.plist (siehe LSApplicationQueriesSchemes) oder fehlende Methoden in AppDelegate.

0
Code Commander