use*_*438 3 javascript node.js firebase firebase-authentication google-cloud-functions
我正在尝试使用 firebase 云功能在创建新用户时添加一些自定义声明。作为自定义声明,我需要向创建的用户添加用户角色
我尝试了一些教程,其中在用户创建后添加了用户角色。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,
});
});
Run Code Online (Sandbox Code Playgroud)
即使上面的代码在 firebase 中执行,也没有发生任何事情,响应中也没有收到声明。在用户创建中添加自定义声明不是一个好习惯吗?没有用上面的代码附加自定义声明的原因是什么
Ren*_*nec 10
您的 Cloud Function 代码看起来没问题,并且应该正确设置自定义声明。
您似乎遇到的问题是您无法确认声明是否正确设置。事实上,该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;
});
});
Run Code Online (Sandbox Code Playgroud)
最后,请注意,在用户创建时添加自定义声明根本不是“坏习惯”!当您知道要设置哪个 Claim(s) 时,在创建用户时执行此操作是完全有意义的。
归档时间: |
|
查看次数: |
2945 次 |
最近记录: |