【发布时间】:2018-04-04 00:14:43
【问题描述】:
我在我的项目中使用 Firebase 和 FirebaseUI,并且在尝试登录时经常遇到同样的崩溃。用户点击 Log in 按钮,然后身份验证选择器应该是如图所示,用户可以使用 Facebook/Google 或电子邮件/密码登录。但是,除了标记以下行之外,它会崩溃并显示 no 错误消息:
struct FIRAuthLogin {
private let authUI = FUIAuth.defaultAuthUI()
private var viewController: UIViewController!
init(delegate: FIRCustomAuthDelegate, viewController: UIViewController) {
self.viewController = viewController
authUI?.delegate = delegate
authUI?.providers = [FUIGoogleAuth(), FUIFacebookAuth()]
}
func present(completion: @escaping () -> Void) {
// Exception on the line below!
let authViewController = authUI?.authViewController()
self.viewController.present(authViewController!, animated: true, completion: completion)
}
}
即使let authViewController = authUI?.authViewController() 行中存在异常,authViewController 不是 nil。
下面是堆栈跟踪中的图像(在问题导航器中):
问题是我只是覆盖了FUIPasswordSignUpViewController,所以我有点困惑。
每当发生这种情况时,我通常只是从我的项目中删除 CocoaPods 并再次集成它。然后它会正常工作,但是我现在已经多次这样做了,并且错误仍然存在,必须有一个潜在的错误。不幸的是,我无法使用 FirebaseUI GitHub 代码重现该错误,所以我猜测该错误已经结束。这就是为什么我在这里而不是在 FirebaseUI-iOS GitHub 存储库中询问的原因。
【问题讨论】:
-
尝试让您的代码更安全,例如为您的
authViewController添加if let。我猜这不会在生产中发生???我希望不是。我得到了这个理论,因为您提到了通过 Cocoapods 重新安装框架。尝试通过 TestFlight 测试您的应用时重现该崩溃。 -
我正在通过 TestFlight 进行测试,它工作正常。正如我所说,
authViewController不是nil。使用if let时,我得到了同样的异常。
标签: ios swift firebase firebase-authentication firebaseui