【问题标题】:How to delete other user using Firebase functions?如何使用 Firebase 功能删除其他用户?
【发布时间】:2020-08-06 11:39:45
【问题描述】:

据我了解,一个用户无法删除 firebase 中的另一个用户。从以前的topic 我了解到我可以为此使用firebase 函数。每个用户在 Cloud Firebase 中都有一个文档(路径:/users/userPhoneNumber/{age,height,...})。删除文档后,我想从 firebase 身份验证中删除用户。我知道如何使用函数捕捉云火力库中的变化(虽然我不确定如何捕捉删除),但我遇到的问题是如何删除用户?我在我的应用程序端使用 Java,在我的功能端使用 javascript。据我了解,用户应该在手机上安装该应用程序才能删除他的身份验证。

【问题讨论】:

  • 因此,在删除 Firestore users 集合中的用户文档时,您希望删除身份验证服务中的用户。是对的吗? users 集合中文档的 id 是什么?用户电话号码?
  • @RenaudTarnec 是的,您理解正确。据我了解,这是从 Auth 服务中删除用户的唯一方法(如果没有,请告诉我如何)。文档 id 是用户的电话号码。
  • 客户端 SDK 提供了删除用户的方法(请参阅 here 了解 JS SDK)但只有登录的用户可以删除自己的帐户,其他用户不能删除.

标签: javascript firebase google-cloud-firestore firebase-authentication google-cloud-functions


【解决方案1】:

由于用户的 Firestore 文档 ID 是用户的电话号码,因此您可以使用 Admin SDK getUserByPhoneNumber()deleteUser() 方法编写如下云函数。

exports.deleteUser = functions.firestore
    .document('users/{userPhoneNbr}')
    .onDelete(async (snap, context) => {
        
        try {
            
            const userPhoneNbr = context.params.userPhoneNbr;
            const userRecord = await admin.auth().getUserByPhoneNumber(userPhoneNbr);
            await admin.auth().deleteUser(userRecord.uid);
            return null;
            
        } catch (error) {
            
            // ....
            
        }

    });

【讨论】:

  • 完美,谢谢!知道如何在删除之前注销用户登录的所有会话吗?
猜你喜欢
  • 2020-10-10
  • 2018-02-21
  • 1970-01-01
  • 2021-06-14
  • 2020-09-08
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
相关资源
最近更新 更多