我正在我的应用程序中实现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,因为它显示正确的我需要点击它再次,对代码有什么问题的任何想法?提前谢谢!
答案 0 :(得分:2)
只需改变:
if(!task.isSuccessful())
到:
if(task.isSuccessful())
它应该有效。 task.isSuccessful()
为真时成功,因此!
符号表示错误。这就是它第二次运作的原因。