我是新的学习者,所以我很难做一些我在文档中找不到的东西。这是我创建用户的代码
mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
//Successfully Registered
Toast.makeText(RegisterActivity.this, "Registration Successful", Toast.LENGTH_SHORT).show();
}else {
//Error occurred during registration
Toast.makeText(RegisterActivity.this, "Registration Unsuccessful", Toast.LENGTH_SHORT).show();
try {
throw task.getException();
} catch(FirebaseAuthWeakPasswordException e) {
editTextPassword.setError(e.getMessage());
editTextPassword.requestFocus();
}catch(FirebaseAuthUserCollisionException | FirebaseAuthInvalidCredentialsException e) {
editTextEmail.setError(e.getMessage());
editTextEmail.requestFocus();
} catch(Exception e) {
Log.e(RegisterActivity.class.getName(), e.getMessage());
}
}
progressDialog.dismiss();
}
});
这只需要两个参数(电子邮件和密码)来创建用户。要创建具有更多字段的用户,我应该采取什么方法。
我还添加了FirebaseAuth.AuthStateListener()
来检查用户登录状态。但是当我成功用户登录后调用firebaseAuth.getCurrentUser().getDisplayName()
时,它会像往常一样返回null
。那么如何创建具有名称的用户,以便我可以使用firebaseAuth.getCurrentUser().getDisplayName()
检索它。
答案 0 :(得分:3)
要为用户添加用户姓名或其他必需信息等额外信息,您应使用Firebase实时数据库在成功完成电子邮件和密码注册后生成的唯一user_id下存储这些数据。
以注册表格
获取名称的用户输入String name = mNameField.getText().toString().trim();
在onComplete
方法中添加用户名:
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
String user_id = mAuth.getCurrentUser().getUid;
DatabaseReference current_user = mDatabase.child(user_id);
current_user.child("name").setValue(name);
progressDialog.dismiss();
}
答案 1 :(得分:1)
注册成功后,
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName("Jane Q. User")
.build();
编辑:此代码有点不完整,因为永远无法访问profileUpdates
。
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});
然后,要检索它,请在需要的地方使用它,
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// Name, email address etc
String name = user.getDisplayName();
String email = user.getEmail();
}