FCM HTTP V1 API returns 未注册令牌的 404

FCM HTTP V1 API returns 404 for unregistered token

FCM HTTP v1 API 设备未注册(应用已卸载)时应该 return 错误代码 "UNREGISTERED"。然而 API returns 404 "Requested entity was not found".

有人遇到过这种情况吗?这是预期的吗?文档中的任何地方都没有提到这一点。

当收到消息 "Requested entity was not found" 的 404 错误时,假设设备未注册是否安全?

以下是收到的错误的完整内容。

{
  "error": {
    "code": 404,
    "message": "Requested entity was not found.",
    "errors": [
      {
        "message": "Requested entity was not found.",
        "domain": "global",
        "reason": "notFound"
      }
    ],
    "status": "NOT_FOUND"
  }
}

异常:

Caused by: com.google.firebase.messaging.FirebaseMessagingException: Requested entity was not found.
    at com.google.firebase.messaging.FirebaseMessaging.handleSendHttpError(FirebaseMessaging.java:266) ~[firebase-admin-5.9.0.jar:?]

供参考 API 文档:

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode

是的,我在使用 firebase-admin-node 模块时遇到过这种情况,该模块最近已更新以将 NOT_FOUND 映射到 "unregistered" 错误,因此这似乎是预期的响应。

https://github.com/firebase/firebase-admin-node/commit/069c9cd50502b0fa7cc6843ea3ef9d8d85dca9b9#diff-ce3edf3ab3ed8957259b6bd4035a0256R617

(虽然状态 NOT_FOUND 是关键信息而不是 "Requested entity was not found" 消息)

您可能想要确认的一件事是来自不同 browsers/devices 的未注册令牌。即,我认为来自 chrome 的未注册令牌返回的错误与来自 firefox 的不同。

我们在通过旧的 FCM 端点向未注册设备发送通知时遇到错误 404 错误代码:

https://fcm.googleapis.com/fcm/send

API v1 的文档已更新且不包含此错误代码。