【问题标题】:Firebase authentication with onCompleteListener not working使用 onCompleteListener 的 Firebase 身份验证不起作用
【发布时间】:2021-09-15 22:29:22
【问题描述】:

我正在尝试使用 Firebase 实现一个基本的 android 身份验证系统。以下是我的代码:

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 docs 获取此代码,但由于某种原因它无法正常工作。 onComplete 方法由于某种原因没有被调用。我可以看到“完成前”和“完成后”的祝酒词,但看不到“完成后”的祝酒词。我已在 firebase 控制台的身份验证表中添加了用户,并且我确信我输入了正确的密码。

使用调试器后,我看到我的代码只是跳过了onComplete() 方法,甚至没有到达isSuccessful() 方法。我该如何解决这个问题?

提前致谢!

【问题讨论】:

  • 嘿,您是否尝试添加addOnCanceledListener 并放置日志或断点以查看是否出现问题?例如空通行证或电子邮件
  • @tperraut 刚刚做了,onCanceledListner 没有被调用。我在status.firebase.google.com 上查看了 Firebase 状态,但当时似乎没有已知问题?此外,我正在事先检查空密码/电子邮件。我不认为这是问题
  • 如果你改用createUserWithEmailAndPassword会发生什么?
  • @tperraut 刚刚用类似的代码尝试过。 Before onCompleteAfter onComplete toasts 被调用,但不是 in onComplete 一个。此外,我的身份验证表中没有创建任何用户。
  • 只是为了确保您在 AndroidManifest.xml 文件中已经添加 android.permission.INTERNET。哈哈。我指出这听起来很奇怪,但很多时候我们忘记添加这个权限,无数小时的调试对于这样一个微不足道的错误是徒劳的。

标签: java android firebase android-studio listener


【解决方案1】:

所以它在我重新启动计算机后自行修复。没有代码更改。也许 Android Studio 有点古怪。

【讨论】:

    【解决方案2】:

    按照这个,我希望你会得到你的答案。

    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) && 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();
                            }
                        });
    
                    }
                }
            });
    

    这是登录按钮上的事件,有更多疑问请回复我。

    【讨论】:

    • 不。这不起作用:( onComplete 根本没有被调用
    • onComplete 被调用了,看清楚了。在 onComplete Functions 中,我展示了登录消息
    • 现在,我要给你整个java文件源代码??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2021-12-20
    • 2018-07-04
    • 2017-02-28
    • 2020-12-15
    • 2018-06-06
    相关资源
    最近更新 更多