我目前开始在我的Android应用程序中使用Firebase,并使用GitHub上的示例创建登录和注册活动。
唯一的问题是我注意到他们的版本只有登录和注册的电子邮件和密码。我想在注册时为用户添加用户名字段。我确实找到了一些可能提供答案的其他链接,但我知道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();
}
)};
}
答案 0 :(得分:6)
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);
}
答案 1 :(得分:1)
首先用户名是不同的字段,您必须在登录后创建。正如你所说,你知道如何注册,即只是先创建自己的帐号,然后你有 id和密码,之后你可以在 firebaseDatabase中创建一个节点 与firebse.com/yourApp/users/
类似,您可以保存其其他信息,例如用户名,地址等