我正在尝试实现删除iOS上当前用户帐户的功能。帐户删除工作正常,但问题是我在删除帐户时无法从数据库和存储中删除帐户的数据。
" currentUser.delete"删除帐户,但我认为没有身份验证从数据库和存储中删除其数据。权限被拒绝消息显示在日志中。运行此功能后,我会看到Firebase控制台身份验证页面中的帐户已消失,但数据库和存储中的数据仍然存在。
这是删除帐户的正确方法吗?
我尝试在删除帐户之前从数据库和存储中删除数据。但是,如果会话超过5分钟,Firebase会要求重新进行身份验证。在再次执行帐户删除之前,重新登录会向用户显示空数据,因此这会产生误导并且非常混乱。
请在删除帐户时告诉我如何删除数据。
private func deleteAccount() {
guard let currentUser = Auth.auth().currentUser else {
return print("user not logged in")
}
currentUser.delete { error in
if error == nil {
// 1. Delete currentUser's data from Database. Permission denied
// 2. Delete currentUser's data from Storage. Permission denied
// present login screen (welcome page)
self.presentLoginScreen()
} else {
guard let errorCode = AuthErrorCode(rawValue: error!._code) else { return }
if errorCode == AuthErrorCode.requiresRecentLogin {
self.showMessage("Please re-authenticate to delete your account.", type: .error)
do {
try Auth.auth().signOut()
self.presentLoginScreen()
} catch {
print("There was a problem logging out")
}
}
}
}
}
答案 0 :(得分:0)
您可以先删除您的特定用户并通过其 UID 及其值,然后您可以删除用户并将其删除后带到根视图控制器或登录屏幕。
// removing user data from firebase and its specific user id
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
// An error happened.
print(error.localizedDescription)
} else {
Database.database().reference().child("users").child(user?.uid ?? "").removeValue()
self.navigationController?.popToRootViewController(animated: true)
// Account deleted and logout user
// do {
// try Auth.auth().signOut()
// take you to root
// self.navigationController?.popToRootViewController(animated: true)
}