在firebase身份验证中,有没有办法删除自定义声明?

时间:2018-01-09 19:35:20

标签: firebase firebase-authentication firebase-admin

要设置自定义声明,请使用:

admin.auth().setCustomUserClaims(uid,{claim:value});

确实存在

admin.auth().updateUser(uid,{claim:value});

...但我并不完全清楚这两者是如何不同的,似乎没有人真正删除以前应用的自定义声明。

3 个答案:

答案 0 :(得分:4)

来自documentation

  

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

所以这应该删除声明:

%LET DX_27800_CODE = E6609,E661,E668,E669;
%LET DX_27801_CODE = E6601 ;
%LET DX_2859_CODE = D649 ;
%LET DX_6202_CODE = N8320,N8329;

data test;
  set input;
  array dx_code_list (4) $200 _temporary_ ("&dx_27800_code" "&dx_27801_code" "&dx_2859_code" "&dx_6202_code");
  array dx_variable (4) dx_27800 dx_27801 dx_2859 dx_6202;
  array dx dx1-dx3 ;
  do i = 1 to dim(dx_variable);
    dx_variable(i)=0;
    do j=1 to dim(dx) while (dx_variable(i)=0);
      if findw(dx_code_list(i),dx(j),',','it') then dx_variable(i)=1;
    end;
  end;
  drop i j;
run;

答案 1 :(得分:0)

我认为您不能为此使用updateUser,我认为您仍然需要致电

admin.auth().setCustomUserClaims(uid, {claim:null}); 

答案 2 :(得分:0)

@FrankvanPuffelen's answer毫无疑问,在他回答时是正确的,但是从今天(2020年11月30日)开始,the updateUser method的第二个参数称为properties,是没有claim属性的UpdateRequest interface

设置自定义声明现已移至the setCustomUserClaims method

您通过设置...来设置它们

admin.auth().setCustomUserClaims(uid, { admin: true });

...并且唯一可以删除一个对象的方法是将整个对象设置为null。如果有多项,似乎没有办法选择性地删除一项。

admin.auth().setCustomUserClaims(uid, null);