【问题标题】:Trying to set confirm password with firebase auth尝试使用 firebase auth 设置确认密码
【发布时间】:2017-07-21 21:01:42
【问题描述】:

我正在尝试编写我的第一个应用程序,并且我正在使用 firebase auth email-password 作为我的登录方法。在我的注册活动中,我想拥有电子邮件、密码和确认密码。在创建帐户之前,我无法让应用程序检查密码是否 >= 6 个字符以及密码和确认密码是否相等。 该应用程序似乎检查密码是否> = 6,但如果是这样,它会创建帐户而不检查密码是否=确认密码。 我还想显示一条错误消息,说明用户名已被使用。

这是我的代码

    private void signUpUser(String email, final String password) {
    auth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (!task.isSuccessful())
                    {
                        if (password.length() < 6)
                            snackbar = Snackbar.make(activity_criar_conta, "Your password must have at least 6 characters.", Snackbar.LENGTH_SHORT);
                                    snackbar.show();

                        String pass2 = etConfirmarSenha.getText().toString();

                        if (!password.equals(pass2))
                        snackbar = Snackbar.make(activity_criar_conta, "Both password fields must be identic", Snackbar.LENGTH_SHORT);
                        snackbar.show();

                    }
                    else{
                        String emailuser = etCriarEmail.getText().toString();
                        snackbar = Snackbar.make(activity_criar_conta, "Your account was created with sucess: "+emailuser,Snackbar.LENGTH_SHORT);
                        snackbar.show();

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    您想在调用 auth.createUserWithEmailAndPassword 之前检查您的条件。

    您的 if 语句中还缺少 {,因此它没有按照您的预期进行。应该是这样的:

    private void signUpUser(String email, final String password) {
       if (password.length() < 6) {
         snackbar = Snackbar.make(activity_criar_conta, "Your password must have at least 6 characters.", Snackbar.LENGTH_SHORT);
         snackbar.show();
         return;
       }
       String pass2 = etConfirmarSenha.getText().toString();
       if (!password.equals(pass2)) {
        snackbar = Snackbar.make(activity_criar_conta, "Both password fields must be identical", Snackbar.LENGTH_SHORT);
        snackbar.show();
        return;
       } 
       auth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            String emailuser = etCriarEmail.getText().toString();
                            snackbar = Snackbar.make(activity_criar_conta, "Your account was created with sucess: "+emailuser,Snackbar.LENGTH_SHORT);
                            snackbar.show();
    

    【讨论】:

    • 非常感谢 Ian Barber,这真的解决了我的问题。
    • @barber 你能告诉我从哪里可以做这些事情吗?实际上我使用的是firebase auth UI,它是一个包装器,我没有得到任何自定义它的东西。
    猜你喜欢
    • 2018-11-02
    • 2019-05-14
    • 1970-01-01
    • 2017-03-13
    • 2021-09-18
    • 2015-03-30
    • 2018-03-03
    • 1970-01-01
    相关资源
    最近更新 更多