首页 文章

Android FirebaseUI Auth - 如何重新进行身份验证?

提问于
浏览
2

相关问题:How does Firebase Auth UI deal with reauthentication?(这个问题是关于iOS的,未解决)

我想允许用户在Android上使用FirebaseUI更新他们的电子邮件/密码/等 .

根据guide,"drop-in" UI提供:

帐户管理 - 用于处理帐户管理任务的流程,例如帐户创建和密码重置 .

GitHub上,看起来AuthUI管理页面功能仍在进行中(对吗?)

所以,我已经创建了自己的帐户管理页面,但有些操作对安全性敏感,需要reauthentication

某些安全敏感操作(例如删除帐户,设置主电子邮件地址和更改密码)要求用户最近登录 . 如果您执行其中一项操作,并且用户已在很久以前登录,操作失败并抛出FirebaseAuthRecentLoginRequiredException .

示例代码要求我们在将用户传递给reauthenticate之前从用户检索凭据:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
AuthCredential credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234");

// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Log.d(TAG, "User re-authenticated.");
            }
        });

但是,从用户获取凭据非常重要,因为我允许使用Google,电子邮件,Facebook和电话号码登录 . 例如,使用电话号码登录需要将文本发送到手机 . 这需要的不仅仅是一个要求输入密码的警告对话框 .

在Github上,几个月前有adding a reauthentication builder的合并,但我在最近的FirebaseUI版本中找不到这个功能 . 像 AuthUI.createReauthIntentBuilder() 之类的东西会很完美 .

What is the best approach for re-authenticating a user with Firebase on Android? 我可以使用 AuthUI.createSignInIntent() ,还是实现我自己的重新认证对话框?

目前使用:FirebaseUI Auth 3.1.2

1 回答

  • 0
    mUser.updateEmail(cek_email).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
           if (task.isSuccessful()){
              Toast.makeText(getActivity(), "succes", Toast.LENGTH_SHORT).show();
    
           }
        }
    });
    

    使用方法 updateEmail

相关问题