【发布时间】:2022-01-10 18:16:09
【问题描述】:
对于 Firebase 9.5.0 推送通知,我们有一个接收 Firebase 推送的服务工作人员,服务工作人员都工作正常。
但是,我们正在从旧的 Service Worker 注册(从第 3 方)迁移到我们自己的,全新的用户在注册和获取令牌时都可以正常工作,但是当我们想要使用新服务时出现错误现有注册用户的工作人员(与来自第 3 方的旧服务人员)。
错误发生在getToken 导致错误
FirebaseError: Messaging: A problem occurred while subscribing the user to FCM:
Request is missing required authentication credential.
Expected OAuth 2 access token, login cookie or other valid authentication credential.
我希望我们可以在catch 中添加一些代码来执行诸如重新注册用户之类的操作,但是通过查看 firebase 文档,我找不到任何我们如何在没有错误?
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.5.0/firebase-app.js";
import { deleteToken, getMessaging, getToken, isSupported, onMessage } from "https://www.gstatic.com/firebasejs/9.5.0/firebase-messaging.js";
const firebaseConfig = {
apiKey: ...
authDomain: ...
projectId: ...
storageBucket: ...
messageSenderId: ...
appId: ...
measurementId: ...
};
const firebaseApp = initializeApp(firebaseConfig);
const messaging = getMessaging(firebaseApp);
const registerServiceWorker = () => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('serviceworkerfilename.js')
.then( function( registration) {
console.log('reg successful', registration); // gets here ok
getToken( messaging, { serviceWorkerRegistration: registration } )
.then(function(currentToken) {
// do stuff, this normally works for a new user, but not on old service worker
})
.catch( function(err) {
// always gets here for old user from old service worker
Notification.requestPermission().then(function(permission) {
console.log(permission); // gets here, and shows 'granted', but stuck from here what we can do to reset the user
});
});
})
}
}
【问题讨论】:
标签: javascript firebase push-notification firebase-cloud-messaging service-worker