Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

FCM: send()/sendEachForMulticast() with `fid` return NotRegistered for a FID that Console delivers to at the same moment

Abierto
#3,288 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@Doris-Ge ya está trabajando en esto.

Desde el 21/10/2026.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
22/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
nodejs, typescript
Área
backend

Línea de trabajo

The failing calls are Messaging.send() with fid and Messaging.sendEachForMulticast() with fids, both returning messaging/installation-id-not-registered with a 404. Start by reproducing with a FID from a fresh client register() call, then compare results under the emulator's user credentials and under a deployed function's service account, since the reporter has not yet tested the latter. Done means either a credential-identity explanation confirmed by the reporter or a reproducible SDK-side cause with a fix.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

api: messaging
[READ] Step 1: Are you in the right place?

Yes — this is about the code in firebase-admin-node itself (Messaging.send() / Messaging.sendEachForMulticast() FID targeting).

[REQUIRED] Step 2: Describe your environment
  • Operating System version: Ubuntu 24.04.4 LTS (WSL2, kernel 6.6.114.1-microsoft-standard-WSL2)
  • Firebase SDK version: firebase-admin 14.5.0 (also reproduces on ^14.4.0); client-side firebase 12.19.0 / @firebase/messaging 0.13.3
  • Firebase Product: Cloud Messaging (FCM) — Firebase Installation ID (FID) targeting
  • Node.js version: 22.23.x
  • NPM version: 10.8.2 (package management via pnpm workspaces; npm version given for reference)
[REQUIRED] Step 3: Describe the problem
Steps to reproduce:
  1. Client registers for push notifications using the new FID-based API: register(messaging, { vapidKey, serviceWorkerRegistration }) from firebase/messaging.
    onRegistered fires with FID ceewOt8IieuDcWg1YUkduN.
  2. In the Firebase Console → Cloud Messaging → Compose notification → Send test message, the same FID is pasted into "Firebase Installation ID or FCM registration
    token". Delivery succeeds.
  3. From a Node backend using firebase-admin, both of the following are called for the same FID and both fail:
    await getMessaging().send({
      fid: 'ceewOt8IieuDcWg1YUkduN',
      notification: { title, body },
    });
    // and
    await getMessaging().sendEachForMulticast({
      fids: ['ceewOt8IieuDcWg1YUkduN'],
      notification: { title, body },
    });
    
    Both reject / return success: false with a NotRegistered error (see Relevant Code for the full error object).
  4. Immediately after step 3's failure (within the same minute), repeating step 2 (Console test send) with the identical FID succeeds again.

This rules out:

  • Propagation delay (Console succeeds within the same minute as the failed Admin SDK calls, both before and after).
  • A multicast-specific bug (reproduces identically on both send() and sendEachForMulticast()).
  • Project/config mismatch (firebase use confirms the same project, refpro-app-staging, as the client's VITE_FIREBASE_PROJECT_ID).

Note: this reproduction was observed while running the backend via the Firebase Functions emulator (firebase emulators:start --only functions), authenticated
via a firebase login user session (no GOOGLE_APPLICATION_CREDENTIALS / gcloud ADC configured locally) rather than a deployed function's service account.
Re-testing against a real deployed Cloud Function (with its actual runtime service account) is still pending on our side — flagging this in case the discrepancy turns
out to be credential-identity-related rather than an SDK bug; will update this issue once confirmed either way.

Possibly related: #2970 reports Console succeeding while Admin SDK's sendEachForMulticast() fails with a 404, but with a different error shape (raw HTML, not a
structured NotRegistered error) and using legacy tokens rather than FIDs — closed by the reporter without explanation, so inconclusive whether it's the same root
cause.

Relevant Code:
import { getMessaging } from 'firebase-admin/messaging';

const response = await getMessaging().sendEachForMulticast({
  fids: ['ceewOt8IieuDcWg1YUkduN'],
  notification: { title: 'Test', body: 'Test' },
});
// response.responses[0] => { success: false, error: FirebaseMessagingError }
FirebaseMessagingError: NotRegistered
  code: 'messaging/installation-id-not-registered',
  cause: RequestResponseError: Server responded with status 404.
  httpResponse: { status: 404, ... }
  codePrefix: 'messaging'
Lenguaje dominante
TypeScript
Estrellas
1.7k
Forks
423
Merge medio
1 d 54 min
PR fusionados (30 d)
16

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de firebase/firebase-admin-node

Todos los issues de firebase/firebase-admin-node

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.