当有人使用Google登录进行身份验证时,我正在尝试在实时数据库中创建新用户。但是,我只是遇到了以下创建用户的方法:
Auth.auth().createUser(withEmail: email, password: password, completion:...)
当用户使用Google登录时,他们没有密码。如何在google登录后在实时数据库中创建用户而不让他们创建密码?
答案 0 :(得分:1)
您应该选择“firebase google authentication”,然后选择电子邮件和密码。
答案 1 :(得分:1)
用于谷歌登录
import Firebase
import GoogleSignIn
class YourClass {
func signIn() {
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().signIn()
}
}
extension YourClass: GIDSignInDelegate {
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
if let error = error {
delegate?.signInError(error: error)
return
}
guard let authentication = user?.authentication else { return }
let credential = GoogleAuthProvider.credential(
withIDToken: authentication.idToken,
accessToken: authentication.accessToken
)
Auth.auth().signInAndRetrieveData(with: credential) { [weak self] (_, error) in
if let error = error {
// Error
return
}
// Success
// Here call the Firebase DB update to users.
}
}
}
用户注册后,您需要在数据库中创建或更新记录
Firestore.firestore().collection("users").document(email).setData(data)
在我的情况下,我使用值email作为用户的primaryKey,数据是一个包含所有存储值的字典。
答案 2 :(得分:0)
在iOS上使用Google登录进行身份验证会逐步查看完整代码here