Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#3,288 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@Doris-Ge đang làm issue này rồi.

Từ ngày 21/10/2026.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
22/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
nodejs, typescript
Lĩnh vực
backend

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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'
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
423
Merge trung bình
1 ngày 54 phút
Pull request đã merge (30 ngày)
16

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của firebase/firebase-admin-node

Tất cả issue của firebase/firebase-admin-node

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.