Firebase删除帐户以及iOS上的数据库和存储

时间:2018-06-04 05:19:02

标签: ios swift firebase-realtime-database firebase-authentication firebase-storage

我正在尝试实现删除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")
        }
      }
    }
  }
}

1 个答案:

答案 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)


        }