簡體   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