ios - Facebook 登录错误 - 未知错误构建 URL(com.facebook.sdk.core 错误 3)

标签 ios swift facebook-login google-signin

我在尝试使用 Facebook 登录时遇到此错误: Optional(Error Domain=com.facebook.sdk.core Code=3 "(null)" UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown error building URL.}) 我在其他帖子中读到它是 FBSDKLoginKit 4.39.0 版本中的一个错误,解决方案正在降级到 4.38.o 现在这给了我另一个错误:Firebase Auth Interop/FIRAuth Interop.h' file not found in the FIRAuth.m #import <FirebaseAuthInterop/FIRAuthInterop.h> 由于我是社交登录的新手,而且 Facebook 开发人员页面中的指南不是最新的 swift,有些是在 obj-c 中,我可能会将其错误翻译为 swift。你能发现问题出在哪里吗? 此外,FBSDKLogin 框架在 frameworks 文件夹中以红色突出显示,所有框架都在 pods/Frameworks 文件夹中。 这是代码: 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
    }

我同时放置 Google 登录和 Facebook 的开放 URL:

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

出现错误的 Facebook 登录 vc 方法:

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

最佳答案

我发现了问题。这与代码无关。这似乎是最新两个版本的 Facebook SDK 中的一个错误,所以我将其降级为

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

它运行得很顺利。 Dough for someone 版本 4.38 解决了它不是适合我的车的问题。 希望这对其他人有用。

关于ios - Facebook 登录错误 - 未知错误构建 URL(com.facebook.sdk.core 错误 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733275/

相关文章:

ios - 淡化 UITextView 中文本范围的 alpha 值

javascript - Facebook:FB登录时黑屏

Android Facebook 集成不注销

ios - AVExportSession 中 CALayer 中的视频重力

ios - 通过 IOS App Store 中的优惠券向特定客户提供折扣

ios - 如何为 oslog 创建的日志添加不同的记录器(输出目的地,如文件和 Crashlytics)?

swift - 将 KVO 添加到设置包

swift - 格式为 HH :mm 的 CEST 时间

在提交审核之前测试应用程序的 Facebook 登录权限?

ios - 如何使用 DeviceCheck.DCDevice Xamarin Forms C# 生成 token 代码 iOS DeviceId