Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase谷歌认证(swift)_Ios_Swift_Firebase_Swift3 - Fatal编程技术网

Ios Firebase谷歌认证(swift)

Ios Firebase谷歌认证(swift),ios,swift,firebase,swift3,Ios,Swift,Firebase,Swift3,在firebase文档之后,我添加了使用google帐户的身份验证,这是我在我的应用程序代理中拥有的代码的一部分 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { if let error = error { print("Failed to log into Google: ", error)

在firebase文档之后,我添加了使用google帐户的身份验证,这是我在我的应用程序代理中拥有的代码的一部分

 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {

        if let error = error {
            print("Failed to log into Google: ", error)
            return
        }
            print("Successfully logged into Google", user)
        guard let idToken = user.authentication.idToken else { return }
        guard let accessToken = user.authentication.accessToken else { return }
        let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)

        Auth.auth().signIn(with: credentials, completion: { (user, error) in
            if let err = error {
                print("Failed to create a Firebase User with Google account: ", err)
                return
            }

            guard let uid = user?.uid else { return }

            print("Successfully logged into Firebase with Google", uid)

        })
    }


    func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {
        // Perform any operations when the user disconnects from app here.
        // ...
    }
但是谷歌按钮

 fileprivate func setupGoogleButtons() {


        googleButton.frame = CGRect(x: 189, y: 532, width: 118, height: 41)
        view.addSubview(googleButton)

        GIDSignIn.sharedInstance().uiDelegate = self
}
显然,在viewController中,我想做的是在用户使用其google帐户登录时自动执行self.performsgue(带有标识符:“goToHome1”,发件人:self),因为在登录后,用户总是在同一个VC上找到。我该怎么做

更新


我根据这个问题解决我的问题

Auth类有一个函数
addAuthStateDidChangeListener:
,请检查它


它将在用户更改时触发,特别是当用户登录时,回调将返回非nil用户。这是您要执行segue的时间。

如果没有错误,则用户成功登录,因此您应该继续。按钮本身只是调用登录功能。根据登录是失败还是成功,您可以发出警报或继续登录

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    if let error = error {
        print("Failed to log into Google: ", error)
        return
    }

    print("Successfully logged into Google", user)
    guard let idToken = user.authentication.idToken else { return }
    guard let accessToken = user.authentication.accessToken else { return }
    let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)

    Auth.auth().signIn(with: credentials, completion: { (user, error) in
        if let err = error {
            print("Failed to create a Firebase User with Google account: ", err)
            return
        }

        guard let uid = user?.uid else { return }
        print("Successfully logged into Firebase with Google", uid)
        // segue here
        DispatchQueue.main.async {
            self.performSegue(withIdentifier: "goToHome1", sender: self)
        }
    })
}

请更新您的问题,以澄清您正在努力实现的目标,以及您已经尝试的目标。这一部分我并不清楚:“我想做的是一个自动…性能检查…在用户登录后的那一刻,总是在同一个VC上找到。”其中有一些功能和技术方面的内容。