为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase createUser使用电子邮件和密码任务.isSuccessful()

Firebase createUser使用电子邮件和密码任务.isSuccessful()

慕无忌1623718 2022-09-14 16:10:22
我正在创建一个安卓应用程序,并正在实现登录/注册功能。我正处于注册活动在我的Firebase应用程序中成功创建用户条目的阶段,但是,我似乎无法跟踪任务是否成功。private void startRegister() {    String email = mEmailField.getText().toString();    String password = mPasswordField.getText().toString();    String confirmPassword = mConfirmPassword.getText().toString();    // Check that fields are not empty    if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(confirmPassword)) {        Toast.makeText(Register.this, "Email, password or confirm password field cannot be empty.", Toast.LENGTH_LONG).show();    } else if (!password.equals(confirmPassword)) {        Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();    } else {        mAuth.createUserWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {            @Override            public void onSuccess(AuthResult authResult) {                Toast.makeText(Register.this, "Success", Toast.LENGTH_LONG).show();            }        }).addOnFailureListener(new OnFailureListener() {            @Override            public void onFailure(@NonNull Exception e) {                Toast.makeText(Register.this, "Failure", Toast.LENGTH_LONG).show();            }        });    }}如果 !task.是成功的() 或者块曾经被到达,但用户是在火库中创建的。任何想法为什么我不能跟踪成功/如果它失败了?相比之下:这在我的登录类中起作用。        mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {            @Override            public void onComplete(@NonNull Task<AuthResult> task) {                if (!task.isSuccessful()) {                    Toast.makeText(Login.this, "Credentials error, user may not exist.", Toast.LENGTH_LONG).show();                }            }        });
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

很难说目前的实施方式是怎么回事。尝试直接添加成功


mAuth.createUserWithEmailAndPassword(email, pass).addOnSuccessListener(new OnSuccessListener<AuthResult>() {

        @Override

        public void onSuccess(AuthResult authResult) {

           //done

        }

    }).addOnFailureListener(new OnFailureListener() {

        @Override

        public void onFailure(@NonNull Exception e) {

            //display toast if registering failed

            ToastRect.failed(RegisterActivity.this, getString(R.string.app_activities_error_text) 

        }

   });


查看完整回答
反对 回复 2022-09-14
?
RISEBY

TA贡献1856条经验 获得超5个赞

public class Register extends AppCompatActivity {


private EditText mEmailField;

private EditText mPasswordField;

private EditText mConfirmPassword;

private Button mRegisterButton;

private FirebaseAuth mAuth;

private FirebaseAuth.AuthStateListener mAuthListener;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    FirebaseApp.initializeApp(this);

    setContentView(R.layout.activity_register);


    mEmailField = findViewById(R.id.registerEmailField);

    mPasswordField = findViewById(R.id.registerPasswordField);

    mConfirmPassword = findViewById(R.id.registerConfirmPassword);

    mRegisterButton = findViewById(R.id.registerButton);

    mAuth = FirebaseAuth.getInstance();



    mAuthListener = new FirebaseAuth.AuthStateListener() {

        @Override

        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {


            if (firebaseAuth.getCurrentUser() != null) {

                 startActivity(new Intent(Register.this, UploadActivity.class));

            }

        }

    };


    // https://stackoverflow.com/questions/10936042/how-to-open-layout-on-button-click-android

    Button register = (Button) findViewById(R.id.navigate_to_login);

    register.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            Intent myIntent = new Intent(view.getContext(), Login.class);

            startActivityForResult(myIntent, 0);

        }

    });


    mRegisterButton.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            startRegister();

        }

    });

}


@Override

protected void onStart() {

    super.onStart();


    mAuth.addAuthStateListener(mAuthListener);

}


private void startRegister() {

    String email = mEmailField.getText().toString();

    String password = mPasswordField.getText().toString();

    String confirmPassword = mConfirmPassword.getText().toString();


    // Check that fields are not empty

    if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(confirmPassword)) {


        Toast.makeText(Register.this, "Email, password or confirm password field cannot be empty.", Toast.LENGTH_LONG).show();

    } else if (!password.equals(confirmPassword)) {


        Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();

    } else {


        mAuth.createUserWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {

            @Override

            public void onSuccess(AuthResult authResult) {


                Toast.makeText(Register.this, "Success", Toast.LENGTH_LONG).show();

            }

        }).addOnFailureListener(new OnFailureListener() {

            @Override

            public void onFailure(@NonNull Exception e) {


                Toast.makeText(Register.this, "Failure", Toast.LENGTH_LONG).show();

            }

        });

    }

}

}


为了确认火垒身份验证状态列表()正在启动。这是来自我的登录类的糟糕的复制和粘贴作业。这阻止了我处理成功的用户创建。


然后修复程序如下所示:


public class Register extends AppCompatActivity {


private EditText mEmailField;

private EditText mPasswordField;

private EditText mConfirmPassword;

private Button mRegisterButton;

private FirebaseAuth mAuth;

private FirebaseAuth.AuthStateListener mAuthListener;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    FirebaseApp.initializeApp(this);

    setContentView(R.layout.activity_register);


    mEmailField = findViewById(R.id.registerEmailField);

    mPasswordField = findViewById(R.id.registerPasswordField);

    mConfirmPassword = findViewById(R.id.registerConfirmPassword);

    mRegisterButton = findViewById(R.id.registerButton);

    mAuth = FirebaseAuth.getInstance();



    // https://stackoverflow.com/questions/10936042/how-to-open-layout-on-button-click-android

    Button register = (Button) findViewById(R.id.navigate_to_login);

    register.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            Intent myIntent = new Intent(view.getContext(), Login.class);

            startActivityForResult(myIntent, 0);

        }

    });


    mRegisterButton.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            startRegister();

        }

    });

}


@Override

protected void onStart() {

    super.onStart();

}


private void startRegister() {

    String email = mEmailField.getText().toString();

    String password = mPasswordField.getText().toString();

    String confirmPassword = mConfirmPassword.getText().toString();


    // Check that fields are not empty

    if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(confirmPassword)) {


        Toast.makeText(Register.this, "Email, password or confirm password field cannot be empty.", Toast.LENGTH_LONG).show();

    } else if (!password.equals(confirmPassword)) {


        Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();

    } else {


        mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

            @Override

            public void onComplete(@NonNull Task<AuthResult> task) {

                if (task.isSuccessful()) {


                    Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();

                }

            }

        });

    }

}

}


查看完整回答
反对 回复 2022-09-14
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号