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

问题描述 投票:1回答:1

我正在浏览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()FUIAuth方法做任何尚未完成的事情?

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

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

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

swift firebase-authentication firebaseui google-identity
1个回答
0
投票

我使用的是现已弃用的Firebase邀请,但它不接受Firebase Auth令牌。我正在更新代码,应该很快就会出来。

© www.soinside.com 2019 - 2024. All rights reserved.