Firebase 声明更改是否会触发onIdTokenChanged

Firebase 声明更改是否会触发onIdTokenChanged,firebase,firebase-authentication,Firebase,Firebase Authentication,说这个函数 添加登录用户ID令牌更改的观察者,包括登录、注销和令牌刷新事件 我的问题是,这是指对id令牌的任何更改,包括对声明的更改,还是仅指登录、注销和令牌刷新 我的用例是,我想推动授权更改,如果他们失去一些特权,应该立即禁止他们使用新禁止的资源,而不仅仅是在下一次加载时。是的,它包括对该帐户的自定义声明的更改。问题是你不能真正“强迫”一推索赔更新。客户端应用程序必须自愿获得一个新的ID令牌,而被破坏的应用程序可能会选择不这样做。至少该效果不会持续超过1小时,直到当前ID令牌过期并且必须刷新为

说这个函数

添加登录用户ID令牌更改的观察者,包括登录、注销和令牌刷新事件

我的问题是,这是指对id令牌的任何更改,包括对声明的更改,还是仅指登录、注销和令牌刷新


我的用例是,我想推动授权更改,如果他们失去一些特权,应该立即禁止他们使用新禁止的资源,而不仅仅是在下一次加载时。

是的,它包括对该帐户的自定义声明的更改。问题是你不能真正“强迫”一推索赔更新。客户端应用程序必须自愿获得一个新的ID令牌,而被破坏的应用程序可能会选择不这样做。至少该效果不会持续超过1小时,直到当前ID令牌过期并且必须刷新为止。但是,您仍然可以连接应用程序来刷新令牌,以响应消息或其他更新。

因此,基本上答案是“否”,因为声明更改不会激活onRetrieveToken,但令牌刷新会激活onRetrieveToken。我不知道“onRetrieveToken”是什么意思。如果您指的是ID标记更改的侦听器,则当自定义声明更改时,该侦听器不会立即启动,但当它更改时,它将更新其中的声明。对不起,我的意思是“onIdTokenChanged”,我对此投了否决票,因为您的答案具有误导性。答案最好改为“否,
setCustomUserClaims()
不会触发
onIdTokenChanged
。您必须手动更新并侦听存储在Firestore或实时数据库上的另一个自定义文档,以便重新获取ID令牌触发器。”@IvanWang严格地说,客户端不必手动更新。令牌将在上次刷新后一小时内自动更新。此时,onIdTokenChanged将随更新一起触发。如果您能指出与此不同的文档,我将更新答案。否则,请考虑添加自己认为更正确的答案。