Firebase SignUp始终出错

时间:2018-03-01 18:22:07

标签: android firebase firebase-authentication

我正在我的应用程序中实现Fire-Base身份验证,使用SignUp和SignIn,但是我遇到了问题,每次填写表单并单击SignUp按钮时Fire-Base都会返回错误,即使该帐户已成功创建。我的SignUp方法代码:

    public class Signup extends AppCompatActivity {

EditText input_email,input_pass;

private FirebaseAuth auth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);

    //View
    input_email = (EditText)findViewById(R.id.id_email);
    input_pass = (EditText)findViewById(R.id.id_pass);

    //Init Firebase
    auth = FirebaseAuth.getInstance();
}

public void iLogin (View v){
        startActivity(new Intent(Signup.this, Login.class));
        finish();
    }

public void iForgot(View v){
        //startActivity(new Intent(Signup.this, ForgotPassword.class));
        finish();
    }

public void iSignUp(View v){
        signUpUser(input_email.getText().toString(),input_pass.getText().toString());
    }

private void signUpUser(String email, String password) {
    auth.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(!task.isSuccessful())
                    {
                        Toast.makeText(Signup.this, "Successfully created your account", Toast.LENGTH_LONG).show();
                    }
                    else{
                        Toast.makeText(Signup.this, "ERROR has occurred", Toast.LENGTH_LONG).show();
                    }
                }
            });
      }
}

所以会发生什么:

1-用户首次打开应用程序,应用程序主要在MainActivity.class上打开,然后将用户重定向到SignUp.class(我上面添加的那个)。

2-用户然后填写两个字段:(电子邮件)和(密码)并单击SignUp按钮

3- SignUp.class(我上面添加的那个)然后创建一个新帐户并显示Toast:ERROR已经发生,即使该帐户已成功创建。为了让课程显示正确的Toast(成功创建您的帐户),我需要再次按下按钮。

所以要明确一点:第一次点击,帐户已创建,我可以在Fire-Base控制台中看到它,但应用程序仍然提供错误的Toast,因为它显示正确的我需要点击它再次,对代码有什么问题的任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:2)

只需改变:

if(!task.isSuccessful()) 

到:

if(task.isSuccessful())

它应该有效。 task.isSuccessful()为真时成功,因此!符号表示错误。这就是它第二次运作的原因。