如果FUIAuth处理失败,为什么Google示例代码会回退到GIDSignIn处理?

时间:2018-04-17 20:30:19

标签: swift firebase-authentication firebaseui google-identity

我正在浏览Google的示例应用程序Friendly Pix的iOS源代码,并注意到我不了解他们使用的登录逻辑。具体来说,在他们的AppDelegate.swift代码(完整来源here)中,他们使用以下内容来设置授权属性:

let authUI = FUIAuth.defaultAuthUI()
authUI?.delegate = self
authUI?.tosurl = kFirebaseTermsOfService
authUI?.isSignInWithEmailHidden = true
let providers: [FUIAuthProvider] = [FUIGoogleAuth(), FUIFacebookAuth()]
authUI?.providers = providers

稍后,他们通过最终调用此方法来处理登录回调:

func handleOpenUrl(_ url: URL, sourceApplication: String?) -> Bool {
    if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
        return true
    }
    return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: nil)
}

这让我想到了一个问题:为什么他们打电话给GIDSignIn.sharedInstance().handle(...)?由于FUIGoogleAuth()FUIAuth.defaultAuthUI()的提供商之一,因此调用FUIAuth.defaultAuthUI()?.handleOpen(...)是否会处理内部的任何Google登录? handle()方法的GIDSignIn在什么情况下会通过调用handleOpen()的{​​{1}}方法执行尚未完成的任何操作?

我或许这可能是为了处理FUIAuth可以返回FUIAuth.defaultAuthUI()的可能性,但是,如果发生这种情况,我认为应用程序不会在这方面取得进展,因为触发回叫的身份验证是:

nil
如果let authViewController = FUIAuth.defaultAuthUI()?.authViewController() authViewController?.navigationBar.isHidden = true self.present(authViewController!, animated: true, completion: nil) authViewController,那么

会在最后一行崩溃(如果nil返回FUIAuth.defaultAuthUI()会发生这种情况。)

1 个答案:

答案 0 :(得分:0)

我正在使用现在不推荐使用的Firebase邀请,并且它不接受Firebase身份验证令牌。我正在更新代码,应该尽快发布。