如何修改用户firebase身份验证令牌声明



如果返回的映射是不可变映射,我如何更新用户声明?

这是Firebase Auth文档中关于如何更新声明的示例代码:

UserRecord user = FirebaseAuth.getInstance()
.getUserByEmail("user@admin.example.com");
Map<String, Object> currentClaims = user.getCustomClaims(); //This returns an immutable map
if (Boolean.TRUE.equals(currentClaims.get("admin"))) {
currentClaims.put("level", 10); //This will throw an exception
FirebaseAuth.getInstance().setCustomUserClaims(user.getUid(), currentClaims);
}

Firebase文档src

引发异常:不支持OperationException:null网址:com.google.common.collect.ImutableMap.put(ImmutableMap.java:468(

Firebase Github

查看该文档,似乎可以通过指定具有新值的Map来设置声明(即,无需指定未修改的值(。

您只需制作映射的副本,就可以使用HashMap副本构造函数对其进行修改。

Map<String, Object> immutableCustomClaims = user.getCustomClaims();
Map<String, Object> mutableCustomClaims = new HashMap<>(immutableCustomClaims)

相关内容

最新更新