【问题标题】:How do I add username to user when using Firebase android?使用 Firebase android 时如何向用户添加用户名?
【发布时间】:2016-10-14 09:24:24
【问题描述】:

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

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();
        }
    )};
}

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

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

    在互联网上进行一些研究,您可以找到一些示例 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);
    }
    

    【讨论】:

    • 谢谢!稍作调整,效果很好!
    • 显示名称和其他一些字段不返回任何数据。您应该在 EditText 中捕获它吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-05
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多