【发布时间】:2019-03-03 14:01:42
【问题描述】:
我正在制作一个应用程序来注册我从 Firebase 身份验证面板手动创建的用户。使用该用户登录后,我的身份验证等于我在 Firebase 上的身份验证
到目前为止,登录效果很好,因为在我使用它登录后,我的 mAuth.getCurrentUser().getUid(); 得到了该 ID。
现在,问题如下,在下一个 Activity 中,我需要使用需要存储在该 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();
}
createUserWithEmailAndPassword 方法(从 FirebaseAuth 创建新用户)之前的这一行 final String adminUID = mAuth.getCurrentUser().getUid(); 向我提供了我使用我在 Firebase 控制台中创建的用户的用户 ID 进行的第一次登录的 mAuth,但之后createUserWithEmailAndPassword 我可以在我的节点中存储该用户一次。
这就是它应该如何工作的。但问题在于我第二次按下该对话框以在我的节点内添加另一个 paciente。
在我创建第一个用户后,createUserWithEmailAndPassword 似乎让我登录了 firebase,然后,当我尝试添加新用户时,它使用了最后一个用户的 UID。
所以我的问题是
有什么方法可以防止createUserWithEmailAndPassword自动登录或更改我第一次登录的当前用户ID?
【问题讨论】:
标签: java android firebase firebase-realtime-database firebase-authentication