Проверка подлинности Firebase с помощью сложного списка не работает

# #java #android #firebase #android-studio #listener

Вопрос:

Я пытаюсь внедрить базовую систему аутентификации Android с помощью Firebase. Ниже приведен мой код:

 Toast.makeText(MainActivity.this, "BEFORE ON-COMPLETE", Toast.LENGTH_SHORT).show();  //this shows up
    mAuth.signInWithEmailAndPassword(emailInputted, passInputted).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Toast.makeText(MainActivity.this, "in OnComplete", Toast.LENGTH_SHORT).show(); //this does not show up
            if(task.isSuccessful()){
                Intent i = new Intent(MainActivity.this, Dashboard.class);
                i.putExtra("EMAIL", emailInputted);
                Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
                startActivity(i);
            } else {
                Toast.makeText(MainActivity.this, "Please check email/password", Toast.LENGTH_SHORT).show();
            }
        }
    });
    Toast.makeText(MainActivity.this, "after OnComplete", Toast.LENGTH_SHORT).show(); //this shows up
 

Я взял этот код из официальных документов Firebase, но по какой-то причине он не работает. onComplete Метод по какой — то причине не вызывается. Я вижу тосты «до завершения» и «после завершения», но не «в завершенном». Я добавил пользователей в свою таблицу аутентификации в консоли firebase и уверен, что ввел правильный пароль.

После использования отладчика я увидел, что мой код просто пропускает onComplete() метод и даже не доходит до isSuccessful() метода. Как мне это исправить?

Заранее спасибо!

Комментарии:

1. Эй, вы пытались добавить addOnCanceledListener и поместить журнал или точку останова, чтобы узнать, не происходит ли что-то не так ? Например, пустой пропуск или электронное письмо

2. @tperraut только что сделал, onCanceledListner не звонит. Я проверил статус Firebase на статус. firebase.google.com , но, кажется, в то время не было никаких известных проблем? Кроме того, я заранее проверяю пустые пароли/электронные письма. Я не думаю, что в этом проблема

3. Что произойдет, если вы используете createUserWithEmailAndPassword вместо этого ?

4. @tperraut только что попробовал это с помощью аналогичного кода. Before onComplete и After onComplete произносятся тосты, но не in onComplete тот. Кроме того, в моей таблице аутентификации не было создано ни одного пользователя.

5.Просто чтобы убедиться, что вы уже добавили android.разрешение.ИНТЕРНЕТ в AndroidManifest.xml файл. Лол. Мне кажется странным указывать на это, но много раз мы забываем добавить это разрешение, и бесчисленные часы отладки бесполезны для такой тривиальной ошибки.

Ответ №1:

Следуйте этому, я надеюсь, вы получите свой ответ.

 lBut = findViewById(R.id.log_btn);
        lBut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String a = usrn.getText().toString().trim();
                String b = pswd.getText().toString().trim();

                if (TextUtils.isEmpty(a) amp;amp; TextUtils.isEmpty(b)) {
                    usrn.setError("Empty Email !!");
                    pswd.setError("Empty Password !!");

                    lBut.setClickable(false);
                } else {
                    lBut.setClickable(true);
                    mAuth.signInWithEmailAndPassword(a, b).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @SuppressLint("ShowToast")
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if (task.isSuccessful()) {
                                Toast.makeText(getApplicationContext(), "Successfully Login!!", Toast.LENGTH_SHORT).show();
                                Intent i = new Intent(getApplicationContext(), HomeP.class);
                                ProgressBar prb = findViewById(R.id.progressBar);
                                prb.setVisibility(View.VISIBLE);
                                startActivity(i);
                                finish();
                            } else
                                Toast.makeText(getApplicationContext(), "Check Error And Try Again!!", Toast.LENGTH_SHORT).show();
                        }
                    });

                }
            }
        });
 

Это событие на кнопке входа в систему, у вас больше сомнений, тогда ответьте мне.

Комментарии:

1. Нет. Это не работает 🙁 onComplete вообще не вызывается

2. Это называется завершенным, видите это ясно. и в завершенных функциях у меня есть сообщение о входе в систему

3. Теперь я должен предоставить вам весь исходный код java-файла ??

Ответ №2:

Так что он исправился сам собой после того, как я перезагрузил компьютер. Никаких изменений в коде. Может быть, Android Studio вела себя как-то странно.