繁体   English   中英

Firebase Google Auth(Swift)

[英]Firebase google auth (swift)

在firebase文档之后,我添加了使用谷歌帐户的身份验证,这是我在我的应用程序委托中包含的代码的一部分

 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.performSegue(withIdentifier: "goToHome1", sender: self) ,因为在登录用户后,在同一VC上找到。 我怎样才能做到这一点?

UPDATE

使用swift 3解决此问题后的问题Google和Facebook Firebase Auth

如果没有错误,则用户已成功登录,因此您应该进行安全检查。 该按钮本身仅调用登录功能。 根据登录是成功还是失败来确定您是否发出警报或发出警告。

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)
        }
    })
}

Auth类具有功能addAuthStateDidChangeListener:请在此处进行检查。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM