“ task.isSuccessful”在CreatewithUseremailandpassword中始终返回false

时间:2018-12-18 05:11:21

标签: android android-studio firebase-authentication

我已经使用createUserWithEmailAndPassword方法注册了用户,并且他们已在我的Firebase项目中注册(我可以看到他们的信息)。但是,当我尝试使用创建的电子邮件和密码登录时,task.isSuccessful方法始终返回false,并且每次都运行else语句。

登录和注册代码:

private Button buttonRegister;
private EditText editTextEmail;
private EditText editTextPassword;
private TextView textViewSignin;

private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    progressDialog=new ProgressDialog(this);
    firebaseAuth= FirebaseAuth.getInstance();


    buttonRegister = (Button) findViewById(R.id.buttonRegister);

    editTextEmail=(EditText) findViewById(R.id.editTextEmail);
    editTextPassword=(EditText) findViewById(R.id.editTextPassword);

    textViewSignin=(TextView) findViewById(R.id.textViewSignin);

    buttonRegister.setOnClickListener(this);
    textViewSignin.setOnClickListener(this);

    if(firebaseAuth.getCurrentUser()!=null){
        //start the profile activity
        finish();
        startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
    }


}

private void registerUser(){
    String email=editTextEmail.getText().toString().trim();
    String password=editTextEmail.getText().toString().trim();

    if(TextUtils.isEmpty(email)){
        Toast.makeText(this, "Please enter E-mail first", Toast.LENGTH_SHORT).show();
        return;
    }

    if(TextUtils.isEmpty(password)){
        Toast.makeText(this, "Please enter password first", Toast.LENGTH_SHORT).show();
        return;
    }

    progressDialog.setMessage("Registerring User......");
    progressDialog.show();


    firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();
                    if(task.isSuccessful()){
                        finish();
                        startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
                    }
                    else{
                        Toast.makeText(MainActivity.this, "Unable to Register! Please try again.", Toast.LENGTH_SHORT).show();
                    }
                }
            });


}

@Override
public void onClick(View v) {
    if(v == buttonRegister){
        registerUser();
    }

    if(v == textViewSignin){
        finish();
        startActivity(new Intent(this, LoginActivity.class));
    }

  }

3 个答案:

答案 0 :(得分:1)

在我这是一个愚蠢的错误。 我在注册用户时将电子邮件值分配给了密码字段。

String email=editTextEmail.getText().toString().trim();
String password=editTextEmail.getText().toString().trim();

因此未为密码实际分配我实际通过的密码。 对不起这个非常愚蠢的错误。

答案 1 :(得分:0)

@Hemant Yadav

您是否检查了Firebase返回false时给出的异常?请使用以下代码检查当时发生了什么异常:

task.getException() //which returns the exception that caused the Task to fail.

检查并更新您遇到的异常情况,我们可以帮助您还是您可以解决这个想法?

答案 2 :(得分:0)

尝试此代码

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

    if (task.isSuccessful()) {
        finish();
        startActivity(new Intent(this, MainActivity.class));
    }
    else {
        try {
            throw task.getException();
        } 
        catch (FirebaseAuthInvalidCredentialsException e) {
            Toast.makeText(getApplicationContext(), "Invalid Password", Toast.LENGTH_LONG).show();
        }
        catch (FirebaseAuthEmailException e){
            Toast.makeText(getApplicationContext(), "Invalid Email", Toast.LENGTH_LONG).show();
        }
        catch (FirebaseAuthException e){
            Toast.makeText(getApplicationContext(), "Invalid Credentials", Toast.LENGTH_LONG).show();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}
});

有关更多详细信息,请访问此https://firebase.google.com/docs/auth/android/password-auth