在Firebase身份验证中,是否可以删除自定义声明?

eca*_*lvo 3 firebase firebase-authentication firebase-admin

为了设置自定义声明,有人使用:

admin.auth().setCustomUserClaims(uid,{claim:value});
Run Code Online (Sandbox Code Playgroud)

确实存在

admin.auth().updateUser(uid,{claim:value});
Run Code Online (Sandbox Code Playgroud)

...但是我不清楚两者之间有何不同,而且似乎都没有人真正删除以前应用的自定义声明。

web*_*eno 9

@FrankvanPuffelen 的答案无疑在他回答时是正确的,但是,就今天(2020 年 11 月 30 日)而言,该方法updateUser第二个参数称为properties,是一个没有属性的UpdateRequest接口claim

设置自定义声明现已移至setCustomUserClaims方法

你通过做...来设置它们

admin.auth().setCustomUserClaims(uid, { admin: true });
Run Code Online (Sandbox Code Playgroud)

...删除一个的唯一方法是将整个对象设置为null. 如果有多个索赔,似乎无法选择性地删除一项索赔。

admin.auth().setCustomUserClaims(uid, null); 
Run Code Online (Sandbox Code Playgroud)


Fra*_*len 6

文档中

您可以通过传递null来删除用户的自定义声明customClaims

因此,这应删除该声明:

admin.auth().updateUser(uid, {claim: null});
Run Code Online (Sandbox Code Playgroud)

  • 使用最新的管理 SDK,我必须使用 `admin.auth().setCustomUserClaims(user.uid, null);` (2认同)