首页 > 解决方案 > Firebase 验证错误且不会变为真,重置后密码也不会更新

问题描述

我已经能够发送并验证电子邮件,但火力基地没有更新。此外,当我检查重置密码时,电子邮件被重置并且火力基地也没有改变。如何将其更改为密码和电子邮件验证将在 fire base 中更新的位置?

我搜索了几个网站,看了几个视频。我对编码真的很陌生。谢谢您的帮助。

这是我的登录信息:

public class Login extends AppCompatActivity implements View.OnClickListener {

//Variables
private Button register, signin, forgotpassword;
private TextInputLayout Email, Password;

private FirebaseAuth mAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_login);

    register = findViewById(R.id.register);
    register.setOnClickListener(this);

    signin = (Button)findViewById(R.id.SignIn);
    signin.setOnClickListener( this );

    Email = findViewById( R.id.email );
    Password = findViewById( R.id.password );

    mAuth = FirebaseAuth.getInstance();

    forgotpassword = (Button) findViewById(R.id.forgot_password);
    forgotpassword.setOnClickListener(this);


}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.register:
            startActivity(new Intent(this, SignUp.class));
            break;

        case R.id.SignIn:
            startActivity( new Intent(this,UserInterface.class) );
            break;

        case R.id.forgot_password:
            startActivity( new Intent(this,ForgotPass.class) );
            break;
    }
}

private void userlogin() {
    String email = Email.getEditText().getText().toString().trim();
    String password = Password.getEditText().getText().toString().trim();

    if (email.isEmpty()){
        Email.setError("Email is required!");
        Email.requestFocus();
        return;
    }
    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
        Email.setError("Please provide valid Email!");
        Email.requestFocus();
        return;
     }
     if (password.isEmpty()){
         Password.setError("Password is required!");
         Password.requestFocus();
         return;
     }
     if (password.length() < 6){
         Password.setError("Min password length is 6 characters!");
         Password.requestFocus();
         return;
     }

    mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener( new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {



            if (task.isSuccessful()){
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

                if (user.isEmailVerified()){
                    startActivity(new Intent(Login.this, UserInterface.class));
                }else{
                    user.sendEmailVerification();
                    Toast.makeText(Login.this, "Check your email to verify your account!", Toast.LENGTH_LONG).show();
                }

            }else {
                Toast.makeText(Login.this, "Failed to login! Please check Email and Password", Toast.LENGTH_LONG).show();

            }

        }

    });


}

}

这是我忘记的密码

public class ForgotPass extends AppCompatActivity {

private Button reset_password;
private TextInputLayout fullname, email;

FirebaseAuth auth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView( R.layout.activity_forgot_pass );
    
    email = findViewById(R.id.email);
    fullname = findViewById(R.id.fullname);
    reset_password = (Button) findViewById(R.id.fp_submit);

    auth = FirebaseAuth.getInstance();

    reset_password.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fp_submit();
        }
    } );
}

private void fp_submit(){
    String email = this.email.getEditText().getText().toString().trim();
    String fullname = this.fullname.getEditText().getText().toString().trim();

    if (fullname.isEmpty()){
        this.fullname.setError( "Name is required" );
        this.fullname.requestFocus();
        return;
    }

    if (email.isEmpty()){
        this.email.setError( "Email is required" );
        this.email.requestFocus();
        return;
    }

    if (!Patterns.EMAIL_ADDRESS.matcher( email ).matches()){
        this.email.setError( "Please priovide valid email" );
        this.email.requestFocus();
        return;
    }

    //progressBar.setVisibility(View.VISIBLE)
    auth.sendPasswordResetEmail( email ).addOnCompleteListener( new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {

            if (task.isSuccessful()){
                Toast.makeText( ForgotPass.this, "Check your email to reset your password",Toast.LENGTH_LONG ).show();

                startActivity( new Intent(ForgotPass.this, Login.class) );
            }else{
                Toast.makeText( ForgotPass.this, "Please try again!", Toast.LENGTH_LONG ).show();
            }

        }
    } );

}

}

这是我的注册

public class SignUp extends AppCompatActivity implements View.OnClickListener {


private FirebaseAuth mAuth;
private TextInputLayout FullName, UserName, Email, Password;
private Button Submit, login;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_sign_up);

    mAuth = FirebaseAuth.getInstance();

    login = (Button)findViewById(R.id.login);
    login.setOnClickListener(this);

    Submit = (Button) findViewById(R.id.submit);
    Submit.setOnClickListener(this);

    FullName = findViewById(R.id.fullname);
    UserName = findViewById(R.id.username);
    Email = findViewById(R.id.email);
    Password = findViewById(R.id.password);

}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.login:
            startActivity(new Intent(this, Login.class));
            break;
        case R.id.submit:
            startActivity( new Intent(this,Login.class));
            break;
    }
}

private void submit(){
    String email = Email.getEditText().getText().toString().trim();
    String password = Password.getEditText().getText().toString().trim();
    String fullName = FullName.getEditText().getText().toString().trim();
    String username = UserName.getEditText().getText().toString().trim();

    if (fullName.isEmpty()){
        FullName.setError("Full Name is required!");
        FullName.requestFocus();
        return;
    }

    if (username.isEmpty()){
        UserName.setError("User Name is required!");
        UserName.requestFocus();
        return;
    }

    if (password.isEmpty()){
        Password.setError("Password is required!");
        Password.requestFocus();
        return;
    }

    if (email.isEmpty()){
        Email.setError( "Email is required!" );
        Email.requestFocus();
        return;
    }

    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
        Email.setError("Please provide valid Email!");
        Email.requestFocus();
        return;
    }

    if (password.length() < 6){
        Password.setError("Min password length should be six characters!");
        Password.requestFocus();
        return;
    }

    mAuth.createUserWithEmailAndPassword(email, password)
           .addOnCompleteListener( new OnCompleteListener<AuthResult>() {
               @Override
               public void onComplete(@NonNull Task<AuthResult> task) {
                   if (task.isSuccessful()){
                       User user = new User (fullName,email,username,password);

                       FirebaseDatabase.getInstance().getReference("user")
                               .child( FirebaseAuth.getInstance().getCurrentUser().getUid() )
                               .setValue( user ).addOnCompleteListener( new OnCompleteListener<Void>() {
                           @Override
                           public void onComplete(@NonNull Task<Void> task) {

                               if (task.isSuccessful()){
                                   Toast.makeText( SignUp.this, "Successfully registered", Toast.LENGTH_LONG ).show();
                                   if (task.isSuccessful()){
                                       FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

                                       if (user.isEmailVerified()){
                                           startActivity(new Intent(SignUp.this, Login.class));
                                       }else{
                                           user.sendEmailVerification();
                                           Toast.makeText(SignUp.this, "Check your email to verify your account!", Toast.LENGTH_LONG).show();
                                       }
                                   }startActivity(new Intent(SignUp.this,Login.class));

                               }else{
                                   Toast.makeText( SignUp.this,"Unable to register!", Toast.LENGTH_LONG ).show();
                               }
                           }
                       } );
                   }else{
                       Toast.makeText( SignUp.this,"Unable to register!", Toast.LENGTH_LONG ).show();
                   }
               }
           } );


}   }

标签: androidfirebase-realtime-databasefirebase-authenticationpasswordsemail-verification

解决方案


推荐阅读