FCM経由で送信されたWebプッシュ通知を受信・表示する方法を先日書きました。
⇒PWAのホームアイコンにFCMを使ってWebプッシュ通知を送信する方法。
サイト側の実装が終わった後、以下のようにcurlコマンドでFCMにプッシュ通知をリクエストします。
curl -X POST -H "Authorization:key=サーバーキー" -H "Content-Type:application/json" -d "{\"notification\": {\"title\":\"Webtanpush-test\", \"body\":\"Webtan-pushtestu-body!\", \"icon\":\"アイコンへのパス\", \"click_action\":\"https://sumida-seabass.sakura.ne.jp\" }, \"to\":\"デバイストークン" }" https://fcm.googleapis.com/fcm/send
これをうまく通すのに結構苦戦したので、その時出力されたエラーと解消法をまとめておきます。
目次
今回指定しているcurlコマンドは下記です。
POSTメソッドでHttpリクエストをしていて、認証キーとJSON形式のデータを渡してリクエストするというものです。
コマンド | 意味 |
-H (または–header) | HTTPヘッダーの指定(情報の付与) |
-X | HTTPメソッドの指定 |
-d(または–data) | データの指定 |
打ち込んでいるcurlコマンドに空白が適切に含まれていないことで発生しています。コマンドをエディタに書き出して、空白位置をなどを修正しましょう。
これも1つ目のと同じです。打ち込んでいるcurlコマンドに空白が適切に含まれていないことで発生しています。コマンドをエディタに書き出して、空白位置をなどを修正しましょう。
curlコマンドを正しく書けた後、コマンドプロンプトには下記のようなエラーが表示されます。
<HTML> <HEAD> <TITLE>The request was missing an Authentication Key (FCM Token). Please, refer to section "Authentication" of the FCM documentation, at https://firebase.google.com/docs/cloud-messaging/server.</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>The request was missing an Authentication Key (FCM Token). Please, refer to section "Authentication" of the FCM documentation, at https://firebase.google.com/docs/cloud-messaging/server. <H2>Error 401 </BODY> </HTML>
認証が通ってないといわれています。curlコマンドの「サーバーキー」の部分を確認してください。
curl -X POST -H "Authorization:key=サーバーキー" -H "Content-Type:application/json" -d "{\"notification\": {\"title\":\"Webtanpush-test\", \"body\":\"Webtan-pushtestu-body!\", \"icon\":\"アイコンへのパス\", \"click_action\":\"https://sumida-seabass.sakura.ne.jp\" }, \"to\":\"デバイストークン" }" https://fcm.googleapis.com/fcm/send
上記のサーバーキーの部分には、サイトによってはWebAPIキーと書かれたりするのですが、記載する内容はFirebaseコンソール画面の「Setteings」⇒「クラウドメッセージング」に表示される「サーバーキー」です。
この認証を通すのには本当に苦労しました。。。。
Firebaseのドキュメントにも記載がなかったりしたので、ほんとにお役に立てれば幸いです。
認証も通った後に表示されたエラーがこれです。
JSONのパースエラーらしく、原因はWindowsコマンドラインでの書き方のせい。
一重引用符(‘)を使わず二重引用符(“)のみで記載し、二重引用符の前に「\」を記載することで解決。