相关问题:Firebase Auth UI如何处理重新验证?(这个问题是针对iOS的),尚未解决)
我想允许用户在Android上使用Firebaseui更新其电子邮件/密码/等。
根据指南," drop-in" UI提供:
帐户管理 - 流动以处理帐户管理任务,例如帐户创建和密码重置。
在GitHub上,看起来Authui管理页面功能仍在进行中(对吗?)
所以,我创建了自己的帐户管理页面,但是某些操作对安全性敏感,需要重新验证:
某些对安全敏感的操作(例如删除帐户,设置主电子邮件地址并更改密码)会重新签署。如果您执行这些操作之一,并且用户在很长的时间内签名以前,动作失败并投掷
FirebaseAuthRecentLoginRequiredException
。
示例代码要求我们从用户中检索凭据,然后再将其传递给重新验证:
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上,几个月前就可以合并添加重新验证构建器,但是我在最新的Firebaseui版本中找不到此功能。诸如AuthUI.createReauthIntentBuilder()
之类的东西将是完美的。
用Android上的firebase重新认证用户的最佳方法是什么?我可以使用AuthUI.createSignInIntent()
,还是可以实现我自己的重新授权对话框?
当前使用:firebaseui auth 3.1.2
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