javascript - 向 onCreate 用户 firebase 云函数添加自定义声明

标签 javascript node.js firebase firebase-authentication google-cloud-functions

我正在尝试使用 firebase 云功能在创建新用户时添加一些自定义声明。作为自定义声明,我需要向创建的用户添加用户 Angular 色

我尝试了一些教程,其中在用户创建后添加了用户 Angular 色。 https://www.youtube.com/watch?v=4wa3CMK4E2Y .但我想在创建用户时添加自定义声明并返回响应

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.addDefaultUserRole = functions.auth.user().onCreate((user) => {

    let uid = user.uid;

    //add custom claims
    return admin.auth().setCustomUserClaims(uid,{
        isAdmin: true,

    });


});

即使上面的代码在 firebase 中执行,也没有发生任何事情,响应中也没有收到声明。在用户创建中添加自定义声明不是一个好习惯吗?没有用上面的代码附加自定义声明的原因是什么

最佳答案

您的云函数代码看起来没问题,自定义声明应正确设置。

您似乎遇到的问题是您无法确认声明是否正确设置。事实上setCustomUserClaims()方法返回一个包含 void 的非空 Promise(没有别的!)。

如果您想通过日志验证声明是否已正确设置,您可以执行以下操作。

exports.addDefaultUserRole = functions.auth.user().onCreate((user) => {

    let uid = user.uid;

    //add custom claims
    return admin.auth().setCustomUserClaims(uid,{
        isAdmin: true
    })
    .then(() => {
         //Interesting to note: we need to re-fetch the userRecord, as the user variable **does not** hold the claim
         return admin.auth().getUser(uid);
    })
    .then(userRecord => {
        console.log(uid);
        console.log(userRecord.customClaims.isAdmin);
        return null;
    }); 
});

最后,请注意,在用户创建中添加自定义声明根本不是“坏习惯”!当您知道要设置哪个 Claim(s) 时,在创建用户时执行此操作是完全有意义的。

关于javascript - 向 onCreate 用户 firebase 云函数添加自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360425/

相关文章:

android - 客户端接收状态 307 的正确行为

javascript - 创建动态的 SharePoint 列表(表单) - 前面的选择决定下一组问题

javascript - 按钮应在结束后 30 秒出现

javascript - 警告框 javascript 不会关闭,因为 window.onload

node.js - 在同构 Redux 应用程序中,保持 API 调用较小还是一次性发送所有信息是更好的做法吗?

node.js - 在 Docker 容器中安装新的 Node 依赖项

javascript - 更改文件不起作用?

node.js - Express js 设置 View 模板选项

firebase - 动态图像调整大小以存储Firebase

android - Firebase 动态链接 : can`t create short link