Javascript 如何使用js刷新FCM令牌

Javascript 如何使用js刷新FCM令牌,javascript,reactjs,firebase,firebase-cloud-messaging,Javascript,Reactjs,Firebase,Firebase Cloud Messaging,我正在为我的React web推送通知设置FCM,它正在正确地执行所有操作,但我不知道如何在令牌过期时刷新令牌 我有一个FCMListener函数,它的代码如下 navigator.serviceWorker .register("/static-files/firebase-messaging-sw.js") .then((registration) => { firebase.initializeApp(settings.getConfi

我正在为我的React web推送通知设置FCM,它正在正确地执行所有操作,但我不知道如何在令牌过期时刷新令牌 我有一个FCMListener函数,它的代码如下

    navigator.serviceWorker
      .register("/static-files/firebase-messaging-sw.js")
      .then((registration) => {
        firebase.initializeApp(settings.getConfig().FIREBASE_CONFIG);
        const messaging = firebase.messaging();
        messaging.useServiceWorker(registration);

        try {
          messaging
            .requestPermission()
            .then(() => {
              return messaging.getToken();
            })
            .then((token) => {
              let topic = `${userInfo.is_host ? "host" : "guest"}`;
              if (token) {
                this.subscribeToTopic(topic, token);
                this.sendTokenToServer({
                  os: "web",
                  push_token: token,
                });
              } else {
                messaging.onTokenRefresh(() => {
                  messaging
                    .getToken()
                    .then((refreshedToken) => {
                      this.subscribeToTopic(topic, token);
                      this.sendTokenToServer({
                        os: "web",
                        push_token: refreshedToken,
                      });
                    })
                    .catch((err) => {
                      console.log("Unable to retrieve refreshed token ", err);
                    });
                });
              }
            });
        } catch (error) {
          if (error.code === "messaging/permission-blocked") {
            console.log("Please Unblock Notification Request Manually");
          } else {
            console.log("Error Occurred", error);
          }
        }
        messaging.onMessage((payload) => {
          console.log("Notification Received", payload);
          alert(payload.notification.body);
        });
      });
  };
}

由于我不知道如何使firebase令牌过期,也无法测试令牌过期时会发生什么,我不知道我尝试刷新令牌的部分是否正确,甚至不知道这是否是获取刷新令牌的正确方法。我非常感谢任何提示和建议

出于测试目的,您可以通过调用API删除FCM令牌。完成此操作后,重新加载页面,将触发onTokenRefresh。

出于测试目的,您可以通过调用API来删除FCM令牌。完成此操作后,重新加载页面,您的onTokenRefresh将启动