首页 > 解决方案 > 当允许用户删除他们的帐户时,它只会删除他们的帐户身份验证,这还不够

问题描述

允许用户删除他们的帐户对于使用以下代码删除他们的帐户身份验证没有问题。

func deleteUser()
{
    let user = Auth.auth().currentUser

    user?.delete
        {
            error in
            if error != nil
            {
                print("ERROR DELETING ACCOUNT")
            }
            else
            {
                print("ACCOUNT DELETED")
            }
    }
}

这可以正常工作,但对实时数据库中的用户 ID 和所有附加的子项没有任何作用。

如何同时允许从实时数据库中删除用户 ID 和连接的子项?

标签: iosswiftfirebasefirebase-realtime-databasefirebase-authentication

解决方案


你不想真正同时做到这一点。您需要先删除数据库项目,而登录用户仍然有一个有效的 ID 令牌可用于向实时数据库识别用户。这对于评估安全规则可能很重要。只有在完成所有数据库工作后,才能删除该帐户。

如果您想使用后端来执行此操作,则可以使用 Cloud Functions 编写Firebase Auth onDelete 触发器,该触发器会在客户端上发生删除为用户删除所有内容。这没关系,因为您还将使用 Firebase Admin SDK 删除所有数据,它会绕过所有安全规则。


推荐阅读