在 react-native-firebase 中删除用户后如何从 firebase 中删除用户数据

问题描述 投票:0回答:1

我想根据用户的要求删除用户和 react-native-firebase 中的所有用户数据。用户数据存储在 firebase 实时数据库中,只能由经过身份验证的用户操作。两个单独的删除操作都很容易做到。但是,我现在面临以下问题:

Firebase 需要最近一次登录才能删除该帐户。因此,删除操作仅在用户最近登录时有效。否则,我必须返回错误并要求用户重新登录,然后再试一次。因此,在确认帐户删除成功之前,我不应该删除用户数据,否则,我可能会得到一个没有数据的用户帐户。账户被删除后,删除用户数据的请求不再来自认证用户(因为它被删除),因此用户不再有删除自己数据的权限。

原则上,我需要同时删除用户和数据,或者触发云功能来对被删除的用户做出反应。关于我如何做到这一点有什么想法吗?

firebase react-native react-native-firebase
1个回答
0
投票

处理这种情况的一种方法是使用 Firebase Cloud Functions。您可以创建一个函数,在删除用户帐户时触发,然后从实时数据库中删除相应的用户数据。

要实施此方法,您可以按照以下步骤操作:

创建一个触发 Firebase 身份验证用户对象的

onDelete()
事件的云函数。每当从您的 Firebase 身份验证系统中删除用户时,都会调用此函数。

在函数内部,检索已删除用户的 UID(唯一标识符)。

使用检索到的UID从实时数据库中删除相应的用户数据。

通过这种方式,可以保证用户账号删除成功后,无论用户最近是否登录,用户数据始终被删除。此外,通过使用 Cloud Functions,您可以自动化此过程并使其更加可靠。

做这样的事情:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.deleteUserData = functions.auth.user().onDelete((user) => {
  const uid = user.uid;
  const userRef = admin.database().ref(`users/${uid}`);

 return userRef.remove();
});

此 Cloud Function 侦听 Firebase 身份验证用户对象的

onDelete()
事件并检索已删除用户的 UID。然后它使用 UID 在实时数据库中创建对用户数据的引用并将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.