FCM Firebase推送消息发件人ID不匹配

时间:2019-07-31 16:57:43

标签: push-notification firebase-cloud-messaging progressive-web-apps

我正在尝试对网站进行现代化改造,使其成为PWA。一部分是推送通知。到目前为止一切顺利,我在清单中添加了gcm_sender_id并订阅了推送服务。我尝试了自动生成的vapid-key或google firebase提供的密钥。片段:

   var reg;
   navigator.serviceWorker.ready
      .then(function(swreg) {
         console.log('SW ready');
         reg = swreg;
         return swreg.pushManager.getSubscription();
      })
      .then(function(sub) {
         console.log('SW ready.then');
         if (sub === null) {
            var vapidPublicKey = 'BEP1z-pU7KfRqXjQGbB_af7YydA1Hxzb3EWDYyb5q44YEflE8RaT0wISdJJnvQlzBkVuC4CupAqU2wm0SxCjxpk';
            // taken^^ from the fcm console under cloud messaging web configuration

            var convertedVapidPublicKey = urlBase64ToUint8Array(vapidPublicKey);
            console.log(convertedVapidPublicKey);
            var retval = reg.pushManager.subscribe({
               userVisibleOnly: true,
               applicationServerKey: convertedVapidPublicKey
            });
            return retval;
         }
         return sub;
      })
      .then(function(newSub) {
         console.log('Received PushSubscription: ', JSON.stringify(newSub));
         return newSub
      })
      .then(function(res) {
         console.log('SW ready.then.then.then');
            if (res.ok) {
               displayConfirmNotification();
            }
      })
      .catch(function(err) {
            console.log(err);
      });

我得到了订阅:

Received PushSubscription:  {"endpoint":"https://fcm.googleapis.com/fcm/send/eU1Mfq-f1So:APA91bEds1D8pio29fNYdMoAQfd_zXcfai7OR_JzppN-Dq5hMhv3_tI9HZHlATBuwBcaPYC6bkmwMXm6IVZ1T83o8r3l8Dyyvxlvy191MjVwc1eKsy8lD1E2sGNaKrZrb5a2qDr9vUi9","expirationTime":null,"keys":{"p256dh":"BLiNeIZqBMTskRwnV5YCtdQFAcbj_-l2fyhOBpcRSOklLy7iv0Ru0XHjJJqOauHeYWk_9rpAjM7lVyVr7_oGHyE","auth":"yXHXHjFu0EiXRXjN8KMEyA"}}

到目前为止,一切都很好。据我了解的过程,浏览器(在本例中为Android上的Chrome)与Google chrome服务器和订阅的文件进行联系。使用的vapid键可以使Firebase与chrome服务器联系,然后通过专有代码触发通知,该专有代码因浏览器而异。

现在,我尝试实际使用我的订阅:

$ curl "https://fcm.googleapis.com/fcm/send/eU1Mfq-f1So:APA91bEds1D8pio29fNYdMoAQfd_zXcfai7OR_JzppN-Dq5hMhv3_tI9HZHlATBuwBcaPYC6bkmwMXm6IVZ1T83o8r3l8Dyyvxlvy191MjVwc1eKsy8lD1E2sGNaKrZrb5a2qDr9vUi9" --request POST --header "TTL: 60" --header "Content-Length: 0" --header "Authorization: key=[server key from fcm console under cloud messaging server key (first entry)"
the key in the authorization header does not correspond to the sender ID used to subscribe this user. Please ensure you are using the correct sender ID and server Key from the Firebase console.

我几次更换了钥匙。没有什么变化。 Google对此字符串没有任何帮助。

1 个答案:

答案 0 :(得分:0)

我有node.js express,postgres,Angular 8应用程序。

我通过在manifest.webmanifest文件(或manifest.json)中添加“ gcm_sender_id”来使其工作 我还使用了Firebase生成的公钥和私钥

您的gcm_sender_id是您在Google云端或Firebase发件人ID中的项目ID

相关问题