【问题标题】:Integrating Facebook Login with Firebase using Swift only loads a white screen使用 Swift 将 Facebook 登录与 Firebase 集成只会加载白屏
【发布时间】:2024-05-01 14:05:02
【问题描述】:

我正在尝试创建与 Firebase 的 Facebook 登录集成。昨天我做的时候习惯了工作。从昨天开始,只有小的 UI 更改导致了一个空白的 Safari 控制器,该控制器应该是 Facebook 权限页面才能登录。

我已经登录了,因为在我的 Firebase 控制台中存储了我的 Facebook 用户,因此登录功能在 UI 更改之前就可以正常工作。我恢复了 UI 更改,重新配置了所有内容,从设备上清除了应用程序,重新安装了 pod 以查看是否有更新的版本,但仍然无法安装。

这是我说的白屏:

另外,控制台日志告诉我:

[ViewService] 获取远程视图控制器失败,错误:错误:domain=_UIViewServiceInterfaceErrorDomain, code=2

这些是我为 FacebookSDK 实现的 AppDelegate 方法:

/* App Delegate */
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FIRApp.configure()
    FBSDKApplicationDelegate.sharedInstance().application(application,
                                                          didFinishLaunchingWithOptions:launchOptions)
    return true
}

@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
    -> Bool {
        return self.application(application,
                                open: url,
                                sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                annotation: [:])
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application,
                                                                 open: url,
                                                                 sourceApplication: sourceApplication,
                                                                 annotation: annotation)
}

这是我用于 Facebook 登录的 IBAction:

/* didPressFacebookLogin(_sender: Any) */
@IBAction func didPressFacebookLogin(_ sender: Any) {
    let facebookLoginManager = FBSDKLoginManager()
    facebookLoginManager.logIn(withReadPermissions: ["public_profile", "email"],
                               from: self) { (result, error) in
        if let error = error {
            print("Failed to login: \(error.localizedDescription)")
            return
        }

        guard let accessToken = FBSDKAccessToken.current() else {
            print("Failed to get access token")
            return
        }

        let credential = FIRFacebookAuthProvider.credential(withAccessToken: accessToken.tokenString)
        FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in
            if let error = error {
                print("Login error: \(error.localizedDescription)")
                let alertController = UIAlertController(title: "Login error",
                                                        message: "Something went wrong while trying to login.",
                                                        preferredStyle: .alert)
                let okAction = UIAlertAction(title: "Ok", style: .cancel, handler: nil)
                alertController.addAction(okAction)
                self.present(alertController, animated: true, completion: nil)

                return
            }
        })
    }
}

我正在寻找那个控制台问题,它告诉我它无法获取远程视图控制器......不过,不知道。有人在 Facebook 遇到过这个问题吗?


更新:适用于装有 iOS 10.3.2 的 iPad

【问题讨论】:

    标签: ios swift firebase firebase-authentication facebook-login


    【解决方案1】:

    将 iOS 更新到 10.3.2 解决了这个问题。

    【讨论】:

      最近更新 更多