首页 文章

电子邮件不存在时,Firebase重置密码

提问于
浏览
1

我正在使用Firebase用户身份验证开发Android应用程序 . 我面临的问题是我从用户那里获得了电子邮件和密码,然后将该用户创建到firebase中 . 我没有验证用户输入的电子邮件 . 现在我想实现重置密码功能 . 为此,Firebase提供resetPassword方法并向该特定用户发送重置密码电子邮件 . 但问题是如果电子邮件不存在那么我们该怎么办?

以下是我用于在Firebase中注册用户的代码:

private void registerUser(){

        //creating a new user
        firebaseAuth.createUserWithEmailAndPassword("user email here", "user password here")
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        //checking if success
                        if(task.isSuccessful()){
                            //display some message here 
                        }else{
                            //display some message here 
                        }

                    }
                });

    }

如果此功能有任何备用选项,请与我们联系 . 谢谢 .

2 回答

  • 0

    请尝试下面的代码可能会帮助你,我正在使用这个 .

    private FirebaseUser user;
    user = FirebaseAuth.getInstance().getCurrentUser();
    final String email = user.getEmail();
    AuthCredential credential = EmailAuthProvider.getCredential(email,oldpass);
    user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
     public void onComplete(@NonNull Task<Void> task) {
        if(task.isSuccessful()){
             user.updatePassword(newPass).addOnCompleteListener(new OnCompleteListener<Void>() {
                 @Override
                 public void onComplete(@NonNull Task<Void> task) {
                     if(!task.isSuccessful()){
                         Snackbar snackbar_fail = Snackbar
                                           .make(coordinatorLayout, "Something went wrong. Please try again later", Snackbar.LENGTH_LONG);
                                             snackbar_fail.show();
                       }else {
                          Snackbar snackbar_su = Snackbar
                                              .make(coordinatorLayout, "Password Successfully Modified", Snackbar.LENGTH_LONG);
                                                snackbar_su.show();
                                            }
                                        }
                                    });
                       }else {
                                Snackbar snackbar_su = Snackbar
                                        .make(coordinatorLayout, "Authentication Failed", Snackbar.LENGTH_LONG);
                                snackbar_su.show();
                            }
                        }
                    });
                }
    }
    
  • 1

    另一种方法是使用Firebase Admin SDK更改用户密码 . 来自documentation on updating user information

    updateUser()方法允许您修改现有用户的数据 . 它接受用户更新的uid以及包含要更新的UserRecord属性的对象:admin.auth() . updateUser(uid,{
    电子邮件:“modifiedUser@example.com”,
    emailVerified:true,
    密码:“newPassword”,
    displayName:“Jane Doe”,
    photoURL:“http://www.example.com/12345678/photo.png”,
    禁用:是的
    })
    .then(function(userRecord){
    //有关userRecord的内容,请参阅UserRecord参考文档 .
    console.log(“成功更新用户”,userRecord.toJSON());
    })
    .catch(function(error){
    console.log(“更新用户错误:”,错误);
    });

    附:

    password- string - 用户新的原始未加密密码 . 必须至少六个字符长 .

    Firebase Admin SDK的这一部分目前仅在Node.js中可用 . 但是,如果您还没有Node.js服务器,则可以在Cloud Functions for Firebase中实现该功能 .

相关问题