Firebase在iOS上删除帐户以及数据库和存储
我正在尝试在iOS上实现删除当前用户帐户的功能。帐户删除工作正常,但问题是在删除帐户时无法从数据库和存储中删除帐户的数据Firebase在iOS上删除帐户以及数据库和存储,ios,swift,firebase-realtime-database,firebase-authentication,firebase-storage,Ios,Swift,Firebase Realtime Database,Firebase Authentication,Firebase Storage,我正在尝试在iOS上实现删除当前用户帐户的功能。帐户删除工作正常,但问题是在删除帐户时无法从数据库和存储中删除帐户的数据 private func deleteAccount() { guard let currentUser = Auth.auth().currentUser else { return print("user not logged in") } currentUser.delete { error in if error == nil {
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")
}
}
}
}
}
“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")
}
}
}
}
}
在删除帐户之前删除数据是从客户端执行此操作的唯一方法。但我不知道你说“我试图在删除帐户之前从数据库和存储中删除数据。但是,如果会话超过5分钟,Firebase会要求重新验证。”这是什么意思。我不明白这里的问题是什么。如果用户帐户被删除,那就差不多结束了,对吗?嘿,道格,如果用户的会话超过5分钟,他会返回欢迎页面。但是,该用户将看到空数据,必须转到“设置”页面才能再次执行帐户删除。我认为这很令人困惑。1.用户转到“设置”页面删除帐户。2.他被要求重新验证并自动返回欢迎页面。3.他再次登录,但数据已全部丢失,帐户仍处于活动状态。4.他必须转到“设置”页面才能再次删除帐户。这不是很奇怪吗?你正在删除帐户。在那种情况下,我希望一切都能重新设置。会话年龄与任何事情都无关。这里是否有您不共享的内容?您不需要使用UID标识与用户相关的数据吗?所以你只需要做一个函数来删除包含特定UID的内容,我相信会话时间很重要。如果超过5分钟,我会得到一个错误,这个错误在else语句中处理。因此,如果会话是旧的,此错误将阻止删除帐户。