云功能 - 用户自定义索赔返回未定义



我使用具有其他索赔的自定义令牌创建了一个新用户。

我能够访问Firestore安全规则中的索赔,但在云功能中,它返回了未定义。

创建用户的代码:

admin.auth()
.createCustomToken(uid, claims)
.then(token => {
    console.log(token);
 });

用于创建用户的代码:

admin.auth().getUser(uid)
.then((userRecord) => { 
 console.log(userRecord.customClaims);
});

USERRECORD.CUSTOMCLAIMS返回未定义的

您应该使用setCustomUserClaims()。不是createCustomToken()

admin.auth()
.setCustomUserClaims(uid, claims)
.then(token => {
    console.log(token);
 });

setCustomUserClaims()始终被覆盖,因此我建议获得当前的定制和合并。

这取决于情况,我建议使用异步/等待。

喜欢。

async function setClaims(uid, claims) {
    try {
        const userRecord = await admin.auth().getUser(uid);
        return await admin.auth().setCustomUserClaims(uid, {
            ...userRecord.customClaims,
            ...claims
        });
    } catch (e) {
        return Promise.reject(e);
    }
}

  • https://firebase.google.com/docs/reference/admin/node/admin.auth.auth.html#set-custom-user-claims
  • https://firebase.google.com/docs/reference/admin/node/admin.auth.auth.html#create-custom-token
  • https://developer.mozilla.org/en-us/docs/web/javascript/reference/refereny/statement/Statements/ashync_function
  • https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/operators/await

更新

setCustomUserClaims()

在提供的UID

确定的现有用户上设置其他开发人员索赔

  • https://firebase.google.com/docs/auth/admin/custom-clairs
  • https://firebase.google.com/docs/reference/admin/node/admin.auth.auth.html#set-custom-user-claims

createCustomToken()

创建一个新的firebase自定义令牌(JWT(,可以将其发送回客户端设备,用于与客户端SDKS的signWithCustomToken((方法签名。

您还可以选择指定要包含在自定义令牌中的其他索赔。例如,在下面,已添加了PremiumAccount字段到自定义令牌,该字段将在Auth/request.auth对象中可用:

中的Auth对象:

它仅在您的安全规则中的auth/request.auth对象中可用。因此未设置用户定制。

  • https://firebase.google.com/docs/auth/admin/create-custom-tokens
  • https://firebase.google.com/docs/reference/admin/node/admin.auth.auth.html#create-custom-token

最新更新