1

我想实现在火力地堡用户名注册,因为它只是给了我,就像是createUserWithEmailAndPassword()方法,但你不能创建一个用户名,我不知道该怎么办呢?如何在Firebase中注册用户名?

以下是我的注册码,但我也想输入一个可以使用它的用户名,当用户发布一些东西时,例如getEmail()方法,也可以有一个getUsername()

auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 

       progressBar.setVisibility(View.GONE); 

       if(!task.isSuccessful()){ 
        Toast.makeText(RegisterActivity.this, "Something went wrong :(" , Toast.LENGTH_LONG).show(); 
       }else{ 
        startActivity(new Intent(RegisterActivity.this, UsernameARegistrarActivity.class)); 
        finish(); 
       } 
      } 
     }); 
    } 

我的模型类:

public class User implements Serializable{ 
    private String user; 
    private String email; 
    private String Uid; 
    private String username; 

    public User() { 
    } 

    public User(String user) { 
     this.user = user; 
    } 

    public User(String user, String email, String uid, String username) { 
     this.user = user; 
     this.email = email; 
     Uid = uid; 
     this.username = username; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getUser() { 
     return user; 
    } 

    public void setUser(String user) { 
     this.user = user; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 


    public String getUid() { 
     return Uid; 
    } 

    public void setUid(String uid) { 
     Uid = uid; 
    } 
} 

回答

1

如果您使用电子邮件/密码身份验证使用用户名代替,你可以简单的指数用户的电子邮件地址,在九月路径。然后,当用户进行身份验证,查找他们的电子邮件索引:

/user_to_email_index/$ USER_NAME/ https://www.firebase.com/docs/web/guide/login/custom.html

0

不能在火力用户本身内存储自定义数据,根据火力文档

您无法直接将其他属性添加到Firebase用户对象;相反,您可以将其他属性存储在您的Firebase实时数据库中。

由于每个注册用户都有一个唯一的ID,你可以用

FirebaseAuth.getInstance().getCurrentUser().getUid() 

一旦用户登录访问,您可以创建使用您的用户存储每个用户的数据的实时数据库中的表类。然后,您可以使用上面的代码片段为Uid查询登录用户的数据库。

此处了解详情: https://firebase.google.com/docs/auth/users

+0

我这样做,但没有办法恢复的值,对于特定的用户,我不知道用什么代码我试过做到这一点http://stackoverflow.com/questions/43444174/how-can-i-get-some-value-from-my-firebase – TheQuestionerXxx

1

试试这个,

DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    User user = new User(firebaseUser.getUid(), 
      firebaseUser.getEmail(), 
      , firstName, photoURL); // add value as bean object 

    database.child(ARG_USERS) 
      .child(firebaseUser.getUid()) 
      .setValue(user) 
      .addOnCompleteListener(new OnCompleteListener<Void>() { 
       @Override 
       public void onComplete(@NonNull Task<Void> task) { 
        if (task.isSuccessful()) { 
       // user data updated in firebase 
         } 


      });