Ios Firebase谷歌认证(swift)
在firebase文档之后,我添加了使用google帐户的身份验证,这是我在我的应用程序代理中拥有的代码的一部分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)
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上找到。”其中有一些功能和技术方面的内容。