【问题标题】:How Reauthenticate User at Firebase如何在 Firebase 重新验证用户身份
【发布时间】:2018-03-28 13:43:00
【问题描述】:

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

我想到的解决方案是让用户输入密码,所以我尝试使用一个字段输入密码但它仍然不起作用,那么我怎样才能将密码传递给firebase并重新验证用户更改数据?

【问题讨论】:

    标签: android firebase


    【解决方案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.");
                    }
                }
            });
    

    【讨论】:

    • 谢谢,你拯救了我的一天。
    • 用户在我的应用程序中输入他的电子邮件和密码,这不是安全漏洞吗,我可以在用户不知情的情况下将它们发送到网络上
    猜你喜欢
    • 2020-10-13
    • 2019-12-24
    • 1970-01-01
    • 2017-05-15
    • 2021-07-31
    • 1970-01-01
    • 2018-01-11
    • 2015-10-10
    相关资源
    最近更新 更多