繁体   English   中英

重新验证用户。 使用 Android 的 FirebaseUI 身份验证

[英]Re-authenticate a user. with FirebaseUI auth for Android

我正在使用 Firebase-UI 身份验证,我想为我的应用程序实现删除帐户功能。

某些安全敏感操作(例如删除帐户、设置主要 email 地址和更改密码)要求用户最近登录。

要删除用户,该用户必须最近登录过,请参阅重新验证用户

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.getEmail(), );//how can i get password of the user 

// 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.");
            }
        });

有没有办法从用户或任何其他解决方案获取当前密码?

我搜索了所有文档,但找不到给我当前用户密码的方法。

某些安全敏感操作(例如删除帐户、设置主要 email 地址和更改密码)要求用户最近登录。

对,那是正确的。 自上次登录后 5 分钟后,将无法执行删除帐户操作,因为它被视为敏感操作。

有没有办法从用户或任何其他解决方案获取当前密码?

,您无法获取登录用户的密码。 没有人会提供那个。 当用户在上次登录后 5 分钟后尝试删除帐户时,您有两种选择:

  1. 您在 UI 中提供注销的可能性。 这样,用户将被重定向到登录屏幕。 一旦它登陆登录屏幕,用户就可以重新启动身份验证过程。

  2. 您可以让用户保持登录状态,但您需要提供一个选项来再次输入密码。 一旦你有了密码,你就可以调用FirebaseUser#getEmail()来获取登录用户的 email。 之后,您可以调用EmailAuthProvider#getCredential(String email, String password)来获取类型为 AuthCredential 的object 有了这样的 object,您可以调用FirebaseUser#reauthenticate(AuthCredential credential)以使用自己的凭据重新进行身份验证。

无论您选择什么选项,在成功验证或成功重新验证后,用户都可以在 5 分钟的时间范围内删除帐户。

就个人而言,我更喜欢第一个选项,因为它只需要一个注销选项 但由您决定哪种更适合您的用例。 在代码中,它看起来像 这样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM