手动添加具有自定义声明的Firebase用户

手动添加具有自定义声明的Firebase用户,firebase,firebase-authentication,Firebase,Firebase Authentication,我正在开发一个只有手动添加的用户才能访问的应用程序(我使用给定的电子邮件和密码在Firebase控制台的auth选项卡中手动添加用户,然后用户可以使用移动应用程序登录) 我想在添加时向一些用户添加“经理”角色,然后手动添加。我听说自定义声明可以解决此问题,但我找不到在Firebase控制台中手动添加自定义声明的方法 可能吗?如果不是,我如何在手动创建用户时添加Firebase用户角色 谢谢大家! 如下所述(我无法将其标记为重复,因为它尚未被接受): 在撰写本文时,没有任何方法可以从Fireba

我正在开发一个只有手动添加的用户才能访问的应用程序(我使用给定的电子邮件和密码在Firebase控制台的
auth
选项卡中手动添加用户,然后用户可以使用移动应用程序登录)

我想在添加时向一些用户添加“经理”角色,然后手动添加。我听说
自定义声明
可以解决此问题,但我找不到在Firebase控制台中手动添加
自定义声明
的方法

可能吗?如果不是,我如何在手动创建用户时添加Firebase用户角色

谢谢大家!

如下所述(我无法将其标记为重复,因为它尚未被接受):


在撰写本文时,没有任何方法可以从Firebase控制台手动添加自定义声明。您需要使用云函数(或您完全控制的服务器,如文档中所述,即一个“”,其中您可以使用管理SDK、Node.js、Java、Python、Go或C#中的一个)


我通常使用临时云函数为特定用户设置声明,如下所示:

exports.assignSpecificClaim = functions.firestore
    .document('tempoSpecificClaim/{tempoId}')
    .onCreate((snap, context) => {

        const claims = {};
        claims['admin'] = true;
        claims['batman'] = true;

        const userId = '26sn9Fvn0hNNG7cs4M1agjzhN3y2';

        return admin.auth().setCustomUserClaims(userId, claims);
    });
如您所见,在临时
tempoSpecificClaim
Firestore集合中创建文档会触发此函数

以下是如何使用它:

  • 首先,将特定的安全规则添加到Firestore安全规则中:
    match/tempospecificlaim/{tempoDoc}{allow read,write:if false;}。
    这样,只能从Firebase控制台在
    tempospecificlaim
    集合中创建文档

  • 将用户uid粘贴到云函数中,重新部署它并在集合中创建一个虚拟文档。触发云功能并设置声明

  • 完成测试后,您将删除
    tempospecificlaim
    集合以及相应的安全规则,删除
    index.js
    中的临时云函数并重新部署它

这不是一个非常精细和优雅的方法,但它确实起到了作用…

文档没有帮助吗@wiesson谢谢,我已经阅读了文档,但是没有解释如何使用Firebase控制台手动添加
自定义索赔