FCMの「以前の HTTP プロトコル」ではWebPushが送信できなくなったかもしれない

こんにちは。 エキサイト株式会社の三浦です。

Webブラウザ用Push通知であるWebPushを使う上でFCMを使っている方は多いと思いますが、最近(2023年6月)特定の条件下でWebPushが送れなくなる問題が発生したので、今回はその共有をさせていただきます。

WebPushとFCM

Push通知といえばアプリだと考えらがちですが、そのWebブラウザ版である「WebPush」も、アプリのPush通知と同じくユーザのエンゲージメントに有効な手段の一つです。

このWebPushを送信する手段として有名なのが、 Firebase Cloud Messaging (FCM) というFirebaseのサービスを使う方法でしょう。

firebase.google.com

Firebase Cloud Messaging(FCM)は、メッセージを無料で確実に送信するためのクロスプラットフォーム メッセージング ソリューションです。

さて、FCMでWebPushを送信する場合、以下の3つの方法があります。

firebase.google.com

現在の推奨は「FCM HTTP v1 API」なので新しく開発する場合はこれを使うでしょうが、昔にWebPushの機構を開発していた場合、「以前の HTTP プロトコル」を使っている場合もあると思います。

そして、この「以前の HTTP プロトコル」ですが、現在ほとんど使えない状況である可能性があります。

「以前の HTTP プロトコル」ではWebPushを送れないかもしれない

「以前の HTTP プロトコル」を使ってChromeへWebPushを送信すると、以下のエラーが発生します。

401 Unauthorized: "Sender is using deprecated Authentication scheme: unauthenticated"

「廃止された認証方法を使っているため認証できません」という意味で、「以前の HTTP プロトコル」での認証が通らなくなったものと推測されます。

最近(2023年6月)では、ChromeへのWebPush送信はほぼこのエラーになってしまい、まともにWebPushを送ることができないようです。

最後に

「以前の HTTP プロトコル」は「FCM HTTP v1 API」に移行することを前々から推奨されていましたが、いよいよその時が来てしまったということかもしれません。

幸い移行手順はドキュメントに存在しているので、こちらを参考にすると良いのではないでしょうか。

firebase.google.com

外部のサービスに頼っているとどうしても起きてしまう問題ですが、基本的には「FCM HTTP v1 API」のほうが色々とメリットが大きいようなので、よい機会として移行を検討してみてください。