如何在Firebase重新验证用户

时间:2017-10-16 23:30:23

标签: android firebase

我正在尝试更新用户的电子邮件,但firebase需要最近登录,所以我尝试使用firebase文档中的方法,但问题是如何传递密码用户?我没有在db中保存密码,我无法从firebase获取密码,所以我不知道如何传递密码。

我认为解决方案是要求用户输入密码,所以我尝试使用字段输入密码但它仍然不起作用,所以如何将密码传递给firebase并重新验证用户改变数据?

1 个答案:

答案 0 :(得分:1)

您需要重新验证用户,请参阅documentation

例如,您有一个用户输入密码的字段,让我们说它是一个EditText etPassword ,并且您在 SharedPreferences 中有用户电子邮件

因此,重新验证的代码将如下所示:

AuthCredential credential = EmailAuthProvider
        .getCredential(SharedPreferences.getmail(),etPassword.getText().toString());

// 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.");
               if(task.isSuccessful()){
                    updateUserEmail();
                 } else { 
                 // Password is incorrect 
                 }
            }
        });

其中 updateUserEmail()

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

user.updateEmail("user@example.com")
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User email address updated.");
                }
            }
        });