相关问题: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
答案 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