Firebase Web FCM消息(消息/在获得令牌之前使用公共密钥)

时间:2018-12-06 15:09:57

标签: angular firebase firebase-cloud-messaging

我退出并登录到应用程序时出现以下错误。

code: "messaging/use-public-key-before-get-token",
message: "Messaging: Error (messaging/use-public-key-before-get-token)."

每次登录我的应用程序时,我都会先叫messaging.requestPermission()然后叫messaging.getToken()。该应用程序第一次运行良好,但是如果我注销并再次登录(再次触发permissiongetToken),则返回上述错误。

Iam使用以下代码:

   requestPermission() {
    const messaging = firebase.messaging();
    messaging.usePublicVapidKey(this.PUBLIC_VPA);

        messaging.requestPermission().then(() => {
            console.log('Notification permission granted.');

            // Get Instance ID token. Initially this makes a network call, once retrieved
            // subsequent calls to getToken will return from cache.
            messaging.getToken().then((currentToken) => {
                if (currentToken) {
                    console.log(currentToken, 'currentToken');
                    this.sendTokenToServer(currentToken);
                } else {
                    console.log('No Instance ID token available. Request permission to generate one.');
                    this.generateRefreshToken();
                }
            }).catch((err) => {
                console.log('An error occurred while retrieving token. ', err);
            });

        }).catch((err) => {
            console.log('Unable to get permission to notify.', err);
        });

}

任何建议都会有所帮助,谢谢

1 个答案:

答案 0 :(得分:1)

当我遇到相同的问题时遇到了您的问题,但通过更新Firebase实例解决了该问题。在大多数情况下,您只需要一个FB实例,但如果不仔细管理应用程序如何使用Firebase,就会遇到冲突。

登录后再次尝试注销/登录时,将引发错误,因为您可能在尝试检索实例时尝试使用信息冲突的FB消息服务。

我正在使用Redux,实际上是通过与我的商店同步的监听器来更新FB实例firebase.initializeApp({config})

希望您也能解决。