使用 firebase 重置密码时出现问题

问题描述 投票:0回答:1

当我输入用户名和密码时,我的登录页面与 firebase 连接得很好,但是当我单击按钮重置密码时,它不会发送重置链接,并且会变黑并返回到登录页面。我已经重新创建了新活动并运行了与 firebase 的连接,但仍然没有解决方案。请参阅下面我的忘记密码活动代码并使用 java 构建 gradle。我正在使用 Android Studio 的 Chipmunk 2021 版本。

emailEditText = findViewById(R.id.inputEmail);
Button resetPasswordButton = findViewById(R.id.resetPassword);
progressBar = findViewById(R.id.progressBar);
resetPasswordButton.setOnClickListener(v - > {
    String email = emailEditText.getText().toString().trim();
    if (email.isEmpty()) {
        Toast.makeText(ForgetPassword.this, "Please enter a registered email",
            Toast.LENGTH_SHORT).show();
        emailEditText.setError("Email is Required");
        emailEditText.requestFocus();
    } else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
        emailEditText.setError("Valid email is Required");
        emailEditText.requestFocus();
    } else {
        progressBar.setVisibility(View.VISIBLE);
        resetPassword();
    }
});
}
private void resetPassword() {
    FirebaseAuth mAuth = FirebaseAuth.getInstance();
    mAuth.sendPasswordResetEmail(Email).addOnCompleteListener(task - > {
            if (task.isSuccessful()) {
                Toast.makeText(ForgetPassword.this, "Please check inbox for reset password 
                    link!", Toast.LENGTH_SHORT).show();
                    new Intent(ForgetPassword.this, LoginActivity.class);
                    //Clear stack to prevent user coming back to ForgotPassword
                    startActivity(null); finish();
                }
                else {
                    Toast.makeText(ForgetPassword.this, "Something went wrong!!",
                        Toast.LENGTH_SHORT).show();
                }
                progressBar.setVisibility(View.GONE);
            });
    }
}

构建.gradle

buildscript{
    dependencies{
        classpath"com.android.tools.build:gradle:7.0.4"
        classpath'com.google.gms:google-services:4.3.15'
    }
    }
    //Top-levelbuildfilewhereyoucanaddconfiguration options common to all sub-projects/modules.
    plugins{
       id'com.android.application'version'7.2.2'apply false
       id'com.android.library'version'7.2.2'apply false
    }allprojects{
    repositories{
        
    }
    }taskclean(type: Delete){
        deleterootProject.buildDir
    }
java android
1个回答
0
投票

您在函数中传递的变量“Email”;

 mAuth.sendPasswordResetEmail(Email)

不是您在

中得到的
String email = emailEditText.getText().toString().trim();

确保您使用正确的变量。

对于活动:

替换这个:

new Intent(ForgetPassword.this, LoginActivity.class);
                    //Clear stack to prevent user coming back to ForgotPassword
                    startActivity(null); finish();

有了这个:

Intent intent = new Intent(ForgetPassword.this, LoginActivity.class);
            //this how you clear stack to prevent user coming back to ForgotPassword
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            finish();
© www.soinside.com 2019 - 2024. All rights reserved.