FirebaseAuth меняет мой текущий UID аутентификации - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю приложение, которое регистрирует пользователя, которого я создаю вручную с панели аутентификации Firebase.После того, как я войду в систему с этим пользователем, мой Auth будет равен авторизации, которую я имею на Firebase

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 первого входа в систему, который я сделал с идентификатором пользователяот пользователя, которого я создал в консоли Firebase, но после createUserWithEmailAndPassword я могу один раз сохранить этого пользователя в моем узле.

enter image description here

Вот как этодолжно сработать.Но проблема возникает во второй раз, когда я нажимаю этот диалог, чтобы добавить еще один paciente в моем узле.

enter image description here

Похоже, createUserWithEmailAndPassword зарегистрировал меня в firebase после того, как я создал своего первого пользователя, а затем, когда я попытался добавить нового, егоиспользовал UID этого последнего пользователя.

Так что мой вопрос

Есть ли способ запретить createUserWithEmailAndPassword автоматический вход в систему или изменить мой текущий идентификатор пользователя, который я вошелв первый раз?

1 Ответ

0 голосов
/ 27 сентября 2018

Это похоже на дизайн.Но я вижу два возможных решения:

  1. Создайте второй экземпляр клиента Firebase, подключаясь к тому же проекту, и используйте его для создания новых пользователей.Подробности о том, как это сделать, можно найти здесь: https://firebase.google.com/docs/configure/

или

Создайте облачную функцию, которая получает электронную почту и пароль, создает пользователя с помощью admin SDK и вызывает его из вашего приложения с помощью HttpsCallable.Вы также можете получить туда текущего пользователя и разрешить запрос, только если пользователь является администратором.Подробнее: https://firebase.google.com/docs/functions/callable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...