[英]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.