[英]How to check if the Firebase user has recently signed in in a Flutter app
我需要實現 function ,我的應用程序中的 Firebase 用戶可以刪除他/她的帳戶,如果他/她願意。 下面是 Firebase 從 Flutter 中刪除帳戶 function:
try {
await FirebaseAuth.instance.currentUser!.delete();
} on FirebaseAuthException catch (e) {
if (e.code == 'requires-recent-login') {
print('The user must reauthenticate before this operation can be executed.');
}
}
在某些情況下,可能會發生用戶很久以前登錄的情況,這會導致 'requires-recent-login' 的異常。
這是我在應用程序中的實際實現:
Future<String> deleteUserDataFromDatabase() async {
try {
// First, delete the user profile from DB
await _firestore
.collection('app_users')
.doc(_auth!.currentUser!.uid)
.delete();
// Lastly, delete the Authentication profile
User? user = _auth!.currentUser;
await user!.delete();
} on Exception catch (e) {
//print(e);
return Future.value(e.toString());
}
return Future.value('SUCCESS');
}
}
如您所見,在使用delete()
function 刪除用戶之前,我首先從 Firestore DB 中刪除用戶配置文件數據。 我需要這樣做,因為我設置了這樣的安全規則,即用戶本身是唯一可以刪除數據庫中他/她的個人資料信息的人,而不是其他任何人..
如果用戶最近登錄過,沒有問題,一切順利。 但是,如果用戶最近沒有登錄,則從 DB 中刪除用戶配置文件信息,但不會刪除Firebase 身份驗證用戶帳戶。
不能先刪除Firebase賬號,再刪除用戶資料信息_auth..currentUser!
運行await user.;delete();
.
我該如何克服這個問題? 如果您有建議,我將不勝感激代碼示例而不是理論答案。
在 flutter 中,有沒有辦法檢測 Firebase 用戶最近是否登錄過? 如果能夠檢測到它,那就太好了。
此外,即使用戶最近沒有登錄,是否有辦法強制刪除用戶帳戶?
火力基地在這里
確切的時間由服務器確定,故意沒有記錄,並且可以隨時更改。 在這種情況下,無法強制刪除(或其他敏感操作),因為這是故意阻止此類操作,直到確認用戶身份為止。
正如其他人評論的那樣,正確的流程是嘗試刪除用戶,然后處理您收到的錯誤。
對於數據庫流,您有幾個選項:
onDelete
Cloud Function 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.