当前位置: 首页 > 知识库问答 >
问题:

如何分别从Firebase身份验证和实时数据库中自动删除用户和用户数据?

葛意远
2023-03-14

一些背景

当创建一个用户帐户时,我按照顺序1使用回调链接做了3件事

>

我将用户的个人资料图片上传到Firebase存储,并捕获返回的downloadUrl,以便在步骤3中使用

我将用户的其他信息(包括步骤2中的下载URL)存储在实时数据库的一个节点中(由$userid键入)

现在的问题是

我提供了一个名为“删除帐户”的按钮,用户可以删除所有内容。也就是说,清除他们在实时数据库中的所有数据,清除他们在Firebase存储中的个人资料图片,最后从Auth中删除他们的帐户。重要的是,所有这些操作都应该成功,或者即使其中一个操作失败,也应该取消。

我看了10页的求救问题

我试过什么?

目前,我使用回调链接,如下所示:

// start by atomically deleting all the user data from the Realtime Database using the fanout system.
- get all appropriate locations and save in fanout dictionary
- update all these locations to nil // atomic goodness :)
    -callback:
        -on failure: 
            - just return // no worries, nothing has changed yet :/
        -on success:
            // proceed to delete user files on firebase storage
            - delete path $userid on firebase storage
                -callback:
                    -on failure: // this is bad, no idea what to do :(
                    -on success:
                        // proceed to delete account from Auth
                        - delete user account from Auth
                            -callback:
                                -on failure: // this is terrible, also, it could happen often b/c firebase does ask for re-authentication sometimes :(
                                -on success: // thank goodness! I have an authListener somewhere ready to show the 'signInViewController' :)

如何以原子方式处理这种多系统(身份验证、存储、实时数据库)操作?我已经研究过交易,但看不出它们如何适应这种情况——文档只显示它们被用于实时数据库中喜欢/明星等的递增计数器。

任何帮助都将不胜感激。

共有1个答案

邢寒
2023-03-14

因此,主要问题是,如果您试图删除的数据仅被部分删除,该怎么办。

我认为你应该考虑一种方法,如果出现问题,可以帮助你恢复它。

我现在不在我的电脑上,但我建议你尝试下载你想删除的数据,只有在成功的情况下,你才能删除本地副本,否则你应该能够轻松地恢复它。

编辑:如果我们谈论大量的存储,而不是本地副本,你可以在云上制作。

因此,首先复制此数据,然后删除它,然后删除数据库数据(之前也复制过),然后可以删除用户帐户,最后可以删除副本。

 类似资料:
  • 我仍在开发我的登录应用程序。此时,用户可以注册、登录和更新配置文件信息。数据存储在firebase实时数据库中,该装置也通过firebase工作。我想添加一个“删除配置文件”按钮,以便从firebase中删除用户信息。我弄清楚了如何从自动认证过程中删除用户。现在我尝试对Uid调用remove()函数,因此现在数据在实时数据库中被删除,但仍在Firebase身份验证中,如果删除userdata,应用

  • 我的Android应用程序中有Firebase身份验证。我的问题是如何在经过身份验证的用户(出现在Firebase控制台的选项卡)和数据库(选项卡)之间建立链接。 我需要通过中出现的将数据库中的数据与中的相关用户链接,并最终发送有关特定的查询,以获取

  • null /signup=>在我的数据库中注册用户,颁发令牌 /登录 /refresh_token null null null 我想要的是客户机V1的一致和兼容API。APIV1的任何现有客户端(应用程序)都应该能够向V1/Signupendpoint发送请求,并以与V2客户端相同的状态完成:在Firebase中创建用户帐户

  • 我有一个firebase实时数据库,具有读/写功能,但是我没有任何用户,也不打算对用户进行身份验证。数据由事件侦听器和调度器(java)编写,我的html ui应用程序应该只读取数据。 我应该如何保护我的db? 在开发(不安全)模式下,我可以使用任何http客户端来写/读数据?如何在保护身份验证后通过身份验证?

  • 我已经开始开发一个由Google的Firebase服务提供支持的应用程序。我很好奇数据传输在Auth和数据库服务中是否安全。如果没有,我是否可以阅读任何材料来源以实现加密? 非常感谢。

  • 在android studio 3.1.3中,用于链接firebase身份验证的“implementation'com.google.firebase:firebase-auth:11.6.0'”和用于链接firebase数据库的“implementation'com.google.firebase:firebase-database:11.8.0'”是app level Gradle中提供的默认