web-dev-qa-db-de.com

Facebook-Login-Fehler - Unbekannter Fehler beim Erstellen der URL

Ich erhalte diesen Fehler, wenn ich versuche, mich bei Facebook anzumelden: Optional(Error Domain=com.facebook.sdk.core Code=3 "(null)" UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown error building URL.}) Ich habe in anderen Posts gelesen, dass es ein Fehler in Version 4.39.0 von FBSDKLoginKit ist und die Lösung auf 4.38.o heruntergestuft wurde Ein weiterer Fehler: Firebase Auth Interop/FIRAuth Interop.h' file not found in the FIRAuth.m #import <FirebaseAuthInterop/FIRAuthInterop.h> Da ich neu bei Social Logins bin und der Leitfaden auf der Facebook-Entwicklerseite nicht mit Swift auf dem neuesten Stand ist und einige in obj-c sind, könnte ich es an Swift falsch übersetzen. Erkennen Sie, wo das Problem liegt? Auch das FBSDKLogin-Framework wird im Frameworks-Ordner rot hervorgehoben, und das gesamte Framework im pods/Frameworks-Ordner . Hier ist der Code: AppDelegate

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: ({_,_ in
        }))

        UNUserNotificationCenter.current().delegate = self

        var error: NSError?
        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        } catch let error1 as NSError{
            error = error1
            print("could not set session. err:\(error!.localizedDescription)")
        }
        do {
            try AVAudioSession.sharedInstance().setActive(true)
        } catch let error1 as NSError{
            error = error1
            print("could not active session. err:\(error!.localizedDescription)")
        }
        window?.tintColor = UIColor.blue

        // Use Firebase library to configure APIs
        FirebaseApp.configure()

        // goggle only
        GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
        GIDSignIn.sharedInstance().delegate = self

        // Facebook SDK
//        FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)


//        return true
    }

Die offene URL, unter der ich sowohl Google als auch Facebook abgelegt habe:

// start google sign in methods
    @available(iOS 9.0, *)
    func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
        -> Bool {
            // google only
//            return
//                GIDSignIn.sharedInstance().handle(url,
//                                                     sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
//                                                     annotation: options[UIApplicationOpenURLOptionsKey.annotation])

            // both google and facebook

            let googleDidHandle = GIDSignIn.sharedInstance().handle(url,
                                                                       sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                                                       annotation: options[UIApplicationOpenURLOptionsKey.annotation])


            guard let source = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String else { return false }
            let annotation = options[UIApplicationOpenURLOptionsKey.annotation] as? String

            let facebookDidHandle =  FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)



//            return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)



            return googleDidHandle || facebookDidHandle
    }

Die Login-Vc mit Facebook-Methode, bei der ich den Fehler bekomme:

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
    if error == nil {
        print("User just logged in via Facebook")
        let credentials = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
        Auth.auth().signInAndRetrieveData(with: credentials) { (user, error) in
            if (error != nil) {
                print("Facebook authentication failed")
            } else {
                print("Facebook authentication succeed")
            }
        }//)
    } else {
        print("An error occured the user couldn't log in")
        print(error)
    }
}
11
vincenzo

Ich habe das Problem gefunden. Es ist kein Code bezogen. Es scheint ein Fehler in den letzten beiden Versionen von Facebook SDK zu sein, also habe ich es herabgestuft 

pod 'FBSDKCoreKit', '4.36.0'  
pod 'FBSDKLoginKit', '4.36.0'  
pod 'FacebookCore', '0.4'  
pod 'FacebookLogin', '0.4'

und es läuft reibungslos . Teig für jemanden Version 4.38 hat das Problem gelöst, es war nicht das Auto für mich . Ich hoffe, das wird für andere nützlich sein.

14
vincenzo

Dies ist ein Facebook SDK-Fehler in Version 4.39.0, der diesen Fehler verursacht. Um diesen Fehler zu beheben, müssen Sie CoreKit und LoginKit einfach auf 4.38.0 herabstufen, die abgeleiteten Daten sowie den Bereinigungsordner löschen (CMD + OPTION + SHIFT + K).

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

Wenn Sie FacebookCore und FacebookLogin verwenden, können Sie Folgendes tun.

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
9
shanezzar

Anscheinend gab es einen Hotfix für diese Version 4.39.1, die am 15. Januar 2019 veröffentlicht wurde (offenbar eine Woche in der Zukunft).

https://developers.facebook.com/docs/ios/change-log-4x/

2
BROK3N S0UL

Diese Problemumgehung auf GitHub hat für mich funktioniert:

https://github.com/facebook/facebook-Swift-sdk/issues/301#issuecomment-446363750

Es gibt auch ein paar andere Problemumgehungen, die für andere Menschen funktionierten.

Meine Pod-Datei sah so aus, als es funktionierte:

pod 'FBSDKCoreKit', :git => 'https://github.com/facebook/facebook-objc-sdk.git', :branch => 'master'
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
0