Typescript 如何删除自定义索赔

Typescript 如何删除自定义索赔,typescript,firebase,firebase-authentication,firebase-admin,Typescript,Firebase,Firebase Authentication,Firebase Admin,我有一些自定义声明,比如 { claim1: true, claim2: true, } 我想取消一项索赔 { claim2: true, } 这里使用 admin.auth().updateUser(uid, {claim: null}); 但是更新用户没有索赔属性 如果我使用这个,这将删除前面的声明,并将其设置为null,而不是remove admin.auth().setCustomUserClaims(context.auth.uid, {claim1: null});

我有一些自定义声明,比如

{
  claim1: true,
  claim2: true,
}
我想取消一项索赔

{
  claim2: true,
}
这里使用

admin.auth().updateUser(uid, {claim: null});
但是更新用户没有索赔属性

如果我使用这个,这将删除前面的声明,并将其设置为null,而不是remove

admin.auth().setCustomUserClaims(context.auth.uid, {claim1: null});
使用获取用户UID的UserRecord。 从属性获取其现有自定义声明。 根据需要对其进行更改。 使用更新修改后的索赔。
删除有问题的索赔

admin.auth().getUser(uid).then((user) => {

    const userCustomClaims = user.customClaims;

    if (userCustomClaims["claim1"]) {

        delete userCustomClaims["claim1"];
        return admin.auth().setCustomUserClaims(user.uid, userCustomClaims);

    }
}).catch((error) => {

    console.error(error);

});

CMIIW

看来你知道怎么做。有什么问题吗?你必须像删除对象的属性一样删除它。见下文。
admin.auth().getUser(uid).then((user) => {

    const userCustomClaims = user.customClaims;

    if (userCustomClaims["claim1"]) {

        delete userCustomClaims["claim1"];
        return admin.auth().setCustomUserClaims(user.uid, userCustomClaims);

    }
}).catch((error) => {

    console.error(error);

});