使用 Firebase android 时如何为用户添加用户名?

How do I add username to user when using Firebase android?

我目前开始在我的 Android 应用程序中使用 Firebase,并且我使用了他们 GitHub 上的示例来创建登录并注册 activity。

https://github.com/firebase/quickstart-android

唯一的问题是我注意到他们的版本只有用于登录和注册的电子邮件和密码。我想在我的用户注册时添加一个用户名字段。我确实找到了一些可能提供答案的其他链接,但我知道 Firebase 最近发生了变化,这些答案没有显示与示例相同的注册方法,所以我认为它可能有所不同。这是我的 createAccount 代码块:

public void createAccount(String email, String password) {
    if (!validateForm()) {
        return;
    }

    showProgressDialog();

    mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (!task.isSuccessful()) {
                Toast.makeText(LoginActivity.this, "An error occurred", Toast.LENGTH_SHORT).show();
            }
            hideProgressDialog();
        }
    )};
}

首先用户名 是您必须在登录 后创建的不同字段。正如你所说,你知道如何注册,即首先让他们的帐户成为你的 id 和密码 ,然后你可以创建一个 node firebaseDatabase 就像 firebse.com/yourApp/users/ 你可以保存它的其他信息 比如用户名、地址等

createUserWithEmailAndPassword 创建的是仅用于身份验证的内部 firebase 用户(您可以在新控制台的 Auth 中查看此信息)。如果你想向这个用户添加更多信息,就像 Sahaj 提到的那样,你需要在你的 firebase 数据库 (YourApp/users/userId) 上创建一个用户节点来处理这个用户名。在此节点中,您将存储要在应用程序中使用的所有用户信息。

在 Internet 上做一些研究,您可以找到一些示例 like this one 如何正确执行此操作。

创建用户时你必须做的几乎就是调用一个函数来创建一个新用户。

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (!task.isSuccessful()) {
            Toast.makeText(LoginActivity.this, "An error occurred", Toast.LENGTH_SHORT).show();
        } else {
            createNewUser(task.getResult().getUser());
        }
        hideProgressDialog();
    }
)};


private void createNewUser(User userFromRegistration) {
    String username = "username";
    String email = userFromRegistration.getEmail();
    String userId = userFromRegistration.getUid();

    User user = new User(username, email);

    mDatabase.child("users").child(userId).setValue(user);
}