FCM getToken() fails in Firebase-hosted Android PWA with messaging/token-subscribe-failed and “missing required authentication credential”

1 day ago 1
ARTICLE AD BOX

I am trying to enable Firebase Cloud Messaging web push in a Firebase-hosted PWA on Android Chrome, but getToken() fails and no FCM token is created.

Setup

Firebase Hosting

Firestore

Android phone

Chrome

App installed as PWA

VAPID key created in Firebase Console → Cloud Messaging

firebase-messaging-sw.js exists and loads

Goal

Register a web push token and save it in Firestore under the user document:

pushEnabled

pushTokens

Problem

Notification permission is granted, the service worker is ready, but getToken() fails.

No token is returned.
pushEnabled stays false.

Exact error

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. See https://developers.google.com/identity/sign-in/web/devconsole-project. (messaging/token-subscribe-failed)

Service worker

importScripts('https://www.gstatic.com/firebasejs/12.10.0/firebase-app-compat.js'); importScripts('https://www.gstatic.com/firebasejs/12.10.0/firebase-messaging-compat.js'); firebase.initializeApp({ // config here }); const messaging = firebase.messaging(); messaging.onBackgroundMessage((payload) => { console.log('Background message received:', payload); });

What I already checked

VAPID key created and passed to getToken()

Notification permission is granted in Chrome

Site notification permission is allowed

PWA removed and reinstalled

Chrome cache/storage cleared

Tested both installed PWA and normal Chrome tab

Firebase JS SDK downgraded from 12.10.0 to 10.14.1

Anonymous Auth enabled

signInAnonymously() added before calling getToken()

Firestore works normally

Service worker is registered and ready

Required Google Cloud APIs enabled:

FCM API

Firebase Management API

Relevant client code

const app = initializeApp(firebaseConfig); const messaging = getMessaging(app); await navigator.serviceWorker.register('/firebase-messaging-sw.js'); const permission = await Notification.requestPermission(); console.log('permission:', permission); if (permission === 'granted') { const token = await getToken(messaging, { vapidKey: 'MY_VAPID_KEY', serviceWorkerRegistration: await navigator.serviceWorker.ready }); console.log('token:', token); }

Current behavior

Permission is granted

Service worker is ready

getToken() throws messaging/token-subscribe-failed

No token is generated

What I am trying to understand

Does this error point to Firebase project / API configuration?

Is this a known Android Chrome PWA issue?

Should FCM web token registration work without Firebase Auth?

Is there a specific mismatch I should check first, such as sender ID, VAPID key, service worker scope, or Firebase config?

Any pointers on the most likely root cause would be appreciated.

Read Entire Article