Android FirebaseUI Auth - 如何重新验证?

时间:2017-12-27 10:02:13

标签: android firebase firebase-authentication firebaseui

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

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

根据guide," drop-in"用户界面提供:

  

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

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()这样的东西是完美的。

在Android上使用Firebase重新验证用户的最佳方法是什么?我可以使用AuthUI.createSignInIntent(),还是仅仅实现我自己的重新认证对话框?

目前正在使用:FirebaseUI Auth 3.1.2

1 个答案:

答案 0 :(得分:-1)

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