如何监听 Firebase 自定义声明的更改?

3
我正在使用Firebase作为后端,在Ionic Vue中创建一个应用程序。 我正在使用Firebase自定义声明来分配用户角色(“付费用户”或“免费用户”),并且我已经设置了一个云函数来分配这些角色,没有任何问题。
现在,我希望我的应用程序能够监听自定义声明的更改,以便如果免费用户成为付费用户,应用程序将实时知道。目前,我只有在使用onAuthStateChanged重新加载应用程序时才会获取更新的自定义声明,如下所示:
onAuthStateChanged(auth, () => {
  if (auth.currentUser) {
    auth.currentUser.getIdTokenResult(true).then((idTokenResult) => {
      console.log(idTokenResult);
      auth.currentUser.subscriber = idTokenResult.claims.subscriber;
    });
  }
// Run app
});

当用户被分配新角色时,最好的监听变化方法是什么?

1个回答

4
我希望我的应用程序能够监听自定义声明的更改。
Firebase身份验证服务无法实现此功能。您应该实现自己的机制:例如,为每个用户保存一个Firestore文档,并在其中保存用户的角色。这样,您就可以设置实时侦听器以监听用户的Firestore文档,并在前端收到警报,指示用户的角色已更改。
请注意,这只会实现一个警报系统。您仍然需要使用firebase.auth().currentUser.getIdTokenResult()(如文档中所示)刷新令牌,以反映前端中的新角色。

非常感谢您的回答,Renaud。 最好的方法是通过Vuex或Pinia设置实时监听器,然后在需要监听更改的每个页面上使用它吗? - Frederik
1
在您的存储中设置Firestore监听器确实是可能的选项之一。 - Renaud Tarnec
难道没有Firebase实时数据库,然后设置实时数据库触发器来实现这个目的吗?我需要类似的东西,所以才问的... - SinisaM
@SinisaM 如果您有一个与此Q&A不完全相关的问题,我建议在SO上创建一个新问题。 - Renaud Tarnec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接