Firebase - 删除包含所有相关数据的用户(iOS,Objective-c)

时间:2018-04-20 08:57:44

标签: ios objective-c firebase

我遇到firebase用户的删除逻辑问题。 问题是:当安全设置只允许经过身份验证的用户操作数据库时,如何删除用户然后删除所有数据?

NSString *userUID = user.uid;
[user deleteWithCompletion:^(NSError *_Nullable error) {
      if (error) {
      }
      else {
           // Account deleted.
           [[[_ref child:@"user_info"] child:userUID] removeValue];
      }
 }];

在日志中: setValue:或removeValue:at / user_info / jKXh5g1t2kbaHIqKTiz75PTGhc33 failed:permission_denied

这里的最佳做法是什么?我是否需要更改安全规则,或者是否存在适用于此情况的代码逻辑?

我感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你有几个选择。

  1. 第一个选项是在删除帐户之前从数据库中删除用户数据。这意味着您可以从应用程序本身触发删除,因此不会出现安全问题。

  2. 第二个选项是从云功能中删除用户帐户后立即删除用户数据。这些函数在受信任的环境中运行,因此(使用Admin SDK)具有对数据库的完全管理访问权限。您将trigger your function when the user account is deleted并清理数据库。

  3. 有一个完整的github仓库有助于这种数据清理:user-data-protection。它基于与前一个示例相同的Cloud Functions trigger,但以声明方式涵盖了更广泛的数据清理。