代码之家  ›  专栏  ›  技术社区  ›  Gastón Saillén Michael Lehenbauer

FirebaseAuth正在更改我当前的身份验证UID

  •  0
  • Gastón Saillén Michael Lehenbauer  · 技术社区  · 6 年前

    enter image description here

    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控制台中创建的用户,但是在 使用电子邮件和密码创建用户 我可以在节点中存储该用户一次。

    enter image description here

    这就是它的工作原理。但问题在于,当我第二次按下该对话框在节点中添加另一个paciente时。

    enter image description here

    好像 使用电子邮件和密码创建用户 在我创建了第一个用户之后,我登录了firebase,然后,当我尝试添加一个新用户时,它使用了最后一个用户的UID。

    有什么方法可以防止 使用电子邮件和密码创建用户

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ricardo Smania    6 年前

    这似乎是故意的。但我看到两种可能的解决方案:

    1. https://firebase.google.com/docs/configure/

    1. https://firebase.google.com/docs/functions/callable