如何在Firebase中添加带有电子邮件和密码的用户名?

Ris*_*ode 6 javascript promise firebase firebase-authentication firebase-realtime-database

我正在使用Firebase,我正在尝试使用电子邮件和密码向数据库添加用户名.

这就是我的数据库现在的样子

有没有办法做到这一点或createUserWithEmailAndPassword()仅用于电子邮件和密码?

signUp.addEventListener("click", function(user)
{
    var username = usernameTxt.value;
    var email = emailTxt.value;
    var password = passwordTxt.value;

    firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error)
    {


      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;

      if (errorCode == 'auth/email-already-in-use')
      {
            alert('email-already-in-use.');
        }
        else
        {
            alert(errorMessage);
        }
          console.log(error);

    });
});
Run Code Online (Sandbox Code Playgroud)

我发现如何使用createUserWithEmailAndPassword()函数添加用户名的解决方案:

firebase.auth().onAuthStateChanged(function(user) {

  var username = usernameTxt.value;

  if (user) {
    firebaseDataBase.ref('users/' + user.uid).set({
        email: user.email,
        uid : user.uid,
        username: username
    });


    console.log("User is signed in.");
  } else {
     console.log("No user is signed in.");

  }
});
Run Code Online (Sandbox Code Playgroud)

Pau*_*tos 12

您需要自己创建该数据库users子节点;-)

createUserWithEmailAndPassword函数在 Firebase 身份验证服务中创建一个新用户。因此,数据库本身根本没有改变。

要将这个新用户也添加到数据库,请尝试:

firebase.database().ref("users").child(user.uid).set(...)
Run Code Online (Sandbox Code Playgroud)


KpT*_*tor 6

这不能通过,createUserWithEmailAndPassword()但有一个firebase方法.您需要在更改身份验证状态时进行侦听,获取用户,然后更新配置文件信息.见下文

这段代码将会出现 createUserWithEmailAndPassword()

 firebase.auth().onAuthStateChanged(function(user) {

                if (user) {

                   // Updates the user attributes:

                  user.updateProfile({ // <-- Update Method here

                    displayName: "NEW USER NAME",
                    photoURL: "https://example.com/jane-q-user/profile.jpg"

                  }).then(function() {

                    // Profile updated successfully!
                    //  "NEW USER NAME"

                    var displayName = user.displayName;
                    // "https://example.com/jane-q-user/profile.jpg"
                    var photoURL = user.photoURL;

                  }, function(error) {
                    // An error happened.
                  });     

                }
    });
Run Code Online (Sandbox Code Playgroud)

正如firebase用户Api中所述:https://firebase.google.com/docs/reference/js/firebase.User#updateProfile

希望这可以帮助