Firebase SignUp始终出错

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

我正在我的应用程序中实现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-然后,用户填写两个字段:(电子邮件)和(密码),然后单击“注册”按钮

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

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

android firebase firebase-authentication
1个回答
2
投票

只是改变:

if(!task.isSuccessful()) 

至:

if(task.isSuccessful())

它应该工作。当task.isSuccessful()为真时,取得了成功,因此!标志使其成为假。这就是它第二次运作的原因。

© www.soinside.com 2019 - 2024. All rights reserved.