mAuth.getCurrentUser().getUid();
那个身份证。
现在,问题是,在下一个活动中,我需要创建一个对话框,该对话框需要存储在UID中,现在我设法用这种方式来实现。
final UserModel userModel = new UserModel();
userModel.setNombre(nombre);
userModel.setApellido(apellido);
final ProgressDialog pd = new ProgressDialog(mContext);
pd.setMessage("Estamos cargando su paciente...");
pd.setCancelable(false);
pd.show();
final String adminUID = mAuth.getCurrentUser().getUid();
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
pd.dismiss();
final String pacienteID = task.getResult().getUser().getUid();
mDatabase.child("Bord").child(adminUID).child("pacientes").setValue(pacienteID).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Map<String,Object> mapUsuario = new HashMap<>();
mapUsuario.put("nombre",userModel.getNombre());
mapUsuario.put("apellido",userModel.getApellido());
mapUsuario.put("pregunta",1);
mDatabase.child("Bord").child(adminUID).child("pacientes").child(pacienteID).updateChildren(mapUsuario);
}
});
Toast.makeText(mContext, "Su paciente se cargo con exito", Toast.LENGTH_SHORT).show();
mDialog.dismiss();
} else {
pd.dismiss();
Log.i("Tags", "Tags signInWithEmail:failure" + task.getException());
Toast.makeText(mContext, "Su contraseña o email es incorrecta.",
Toast.LENGTH_SHORT).show();
}
这条线
final String adminUID = mAuth.getCurrentUser().getUid();
在
createUserWithEmailAndPassword
方法(从FirebaseAuth创建一个新用户)给了我第一次登录的mAuth,这个用户id来自于我在Firebase控制台中创建的用户,但是在
使用电子邮件和密码创建用户
我可以在节点中存储该用户一次。
这就是它的工作原理。但问题在于,当我第二次按下该对话框在节点中添加另一个paciente时。
好像
使用电子邮件和密码创建用户
在我创建了第一个用户之后,我登录了firebase,然后,当我尝试添加一个新用户时,它使用了最后一个用户的UID。
有什么方法可以防止
使用电子邮件和密码创建用户