web-dev-qa-db-ja.com

FCM HTTP V1 APIは、未登録トークンに対して404を返します

FCM HTTP v1 APIは、デバイスが登録解除された(アプリがアンインストールされた)ときにエラーコード「未登録」を返すことになっています。ただし、APIは404 "要求されたエンティティが見つかりませんでした"を返します。

誰もこれを経験しましたか?これは予想されたものですか?これについてはドキュメントのどこにも言及していません。

「リクエストされたエンティティが見つかりませんでした」というメッセージを伴う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.messageshttps://firebase.google.com/docs/reference/fcm/ rest/v1/ErrorCode

19
ybn

はい、firebase-admin-nodeモジュールでこれを経験しました。このモジュールは、NOT_FOUNDを「未登録」エラーにマップするように最近更新されたため、予期される応答であるようです。

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

(ステータスはNOT_FOUNDであるように見えますが、「リクエストされたエンティティが見つかりません」というメッセージではなく、重要な情報です)

確認したいことの1つは、さまざまなブラウザー/デバイスからの未登録トークンです。つまり、chromeからの未登録トークンは、firefoxからのエラーとは異なるエラーを返しました。

16
dule

古いFCMエンドポイントを介して未登録デバイスに通知を送信すると、エラー404エラーコードに直面します。

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

API v1のドキュメントは更新されており、このエラーコードは含まれていません。

1
Willem