通过Google登录在实时数据库中创建Firebase用户

时间:2018-06-17 12:21:44

标签: ios swift firebase firebase-realtime-database firebase-authentication

当有人使用Google登录进行身份验证时,我正在尝试在实时数据库中创建新用户。但是,我只是遇到了以下创建用户的方法:

Auth.auth().createUser(withEmail: email, password: password, completion:...)

当用户使用Google登录时,他们没有密码。如何在google登录后在实时数据库中创建用户而不让他们创建密码?

3 个答案:

答案 0 :(得分:1)

您应该选择“firebase google authentication”,然后选择电子邮件和密码。

请参阅此https://firebase.google.com/docs/auth/ios/firebaseui

https://firebase.google.com/docs/auth/

答案 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