Google Firebase登录完成后,从AppDelegate导航到ViewController

时间:2017-10-27 17:35:57

标签: ios firebase firebase-authentication google-signin

我已在我的ios应用Firebase(设为Google Sign In)中整合了AuthViewControllerinitial ViewController

一旦用户使用Google登录按钮登录,他就会被重定向回 同样AuthViewController(即显示Google登录按钮,虽然他已登录)。

问题:

在用户登录后,我是否可以配置重定向到特定ViewController?如果不是,我需要知道如何使用以下功能在AppDelegate中以编程方式执行此操作

 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
        if let error = error {
            // ...
            return
        }

        guard let authentication = user.authentication else { return }
        let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                       accessToken: authentication.accessToken)
        Auth.auth().signIn(with: credential) { (user, error) in
            if let error = error {
                // ...
                return
            }
            // User is signed in
            // ...
        }
    }

我已经在我的AuthViewController中定义了一个segue以转到MainViewController,但看起来Firebase身份验证是异步调用而userAuthenticated()函数返回false我们在viewDidAppear函数中调用的时间

override func viewDidAppear(_ animated: Bool) {
        print("--------View Did Appear \(userAuthenticated())")
        if userAuthenticated() {
            self.performSegue(withIdentifier: "showMain", sender: nil)
        }
    }


   func userAuthenticated() -> Bool {
        return (Auth.auth().currentUser != nil) ? true : false
    }

编辑: 使用Yarn的方法,虽然它解决了问题..但它首先显示AuthViewController的视图,然后转向MainViewController ...它显示的是一个糟糕的UI体验..我希望用户直接转到MainViewController登录后。{/ p>

1 个答案:

答案 0 :(得分:1)

要以编程方式从AppDelegate中截取,您可以调用

Thread