Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase在iOS上删除帐户以及数据库和存储_Ios_Swift_Firebase Realtime Database_Firebase Authentication_Firebase Storage - Fatal编程技术网

Firebase在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 {

我正在尝试在iOS上实现删除当前用户帐户的功能。帐户删除工作正常,但问题是在删除帐户时无法从数据库和存储中删除帐户的数据

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语句中处理。因此,如果会话是旧的,此错误将阻止删除帐户。