Postman を使用して、Firebase
Cloud Messagingサービスを使用して単一のプッシュ通知を送信しようとしています。
これは、同じ目的のためのcURL
コマンドであり、参考として使用しています。
curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"body\":\"Firebase\"} \"priority":\"10"}"
これまでにやったこと..
1-Headersを適切に設定します
2-Bodyで、raw
を使用しています
{
"to" : "<YOUR_DEVICE_ID_TOKEN>"
,
"notification": {
"body": "Firebase Cloud Message"
}
}
実行すると、戻ってきます401 - Unauthorized
。
プッシュ通知を正しく送信するには何が欠けていますか?
ヘッダーにAuthorization
キーを設定する正しい方法は
key=<API_ACCESS_KEY>
だけでなく
<API_ACCESS_KEY>
馬鹿げた間違いですが、これはPostmanでFirebase Messagingをテストするのに役立つかもしれないので、質問を開いたままにします。
POSTMANを介したFCMの投稿
本文-toはトークンIDです(インスタンストークンを介して生成される必要があります)本文をrawバイナリapplication/jsonに書き込みます
{
"to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
CqjwnUKZ4
ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",
"notification": {
"body": "Hello",
"title": "This is test message."
}
}
ヘッダー:認証が必要です:サーバーキー
新しいFCM HTTP v1 APIでは、Postmanを介してプッシュ通知をテストする方法が変更され、既存のソリューションはプッシュ通知をテストする従来の方法のみに対応しました: https://firebase.google.com/docs/cloud-メッセージ/送信メッセージ
FCM HTTP v1 APIを使用してPostmanでテストするには、まず短命のOauth 2トークンを取得する必要があります。Firebaseサイトの情報に従ってトークンを生成できます: https://firebase.google.com/docs/cloud-messaging/auth-server
Python以下のコードを使用して私のものを生成しました-パッケージをコードに正常にインポートできるように、パッケージをpipインストールすることを忘れないでください:
from oauth2client.service_account import ServiceAccountCredentials
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', FCM_SCOPE)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
トークンを取得したら、承認の下でそれをPostmanに挿入できます。
重要:
私の場合、数分ごとにFCMにプッシュ通知を送信する予定のタスクをテストしようとしていたので、これを機能させるのに少し苦労していました。トークンをログに出力してから、テストのためにそのトークンをPostmanに渡しましたが、FCMへのスケジュールされた呼び出しで既に使用されていることを認識していませんでした。
その場合、既に使用されているため、トークンは無効になり、Postmanテストはすべて失敗しました。この場合、Postmanテスト用に新しいトークンを生成する必要があります。
Postmanを開き、Enter request URL
テキストボックスをクリックして、firebase urlを入力します
https://fcm.googleapis.com/fcm/send
リクエストタイプをPOST
に変更するより。以下のスクリーンショットを参照してください。
ヘッダーをクリックして、2つのparams
Content-Type
とAuthorization
を追加します。
Content-Type= application/json
Authorization=AIzaSyAEb3NhsfGw1ih5mn8cmrGUAXMp86waQ //FCM SERVER KEY
以下のスクリーンショットを参照してください。
Body
をクリックしてRow
を選択し、以下のようにオブジェクトとして値を追加します
{
"to":"eB5papU2Xdc:APA91bFFvc3dXru1fN5JY8U19oHIpfGhPUx7Ll7v9vJYTsIGZ15mDwB2Wpep3flLK85IUqqs2WqJwjYHSDYX28oJ1wTP0R2TDc2ba_uVjUauDcp3pCNKr_0KlghOnS",
"notification" : {
"body" : "New announcement assigned",
"OrganizationId":"2",
"content_available" : true,
"priority" : "high",
"subtitle":"Elementary School",
"Title":"hello"
},
"data" : {
"priority" : "high",
"sound":"app_sound.wav",
"content_available" : true,
"bodyText" : "New Announcement assigned",
"organization" :"Elementary school"
}
}
これで、郵便配達員は次のようになります。右上のSendボタンをクリックします。
幸運を!
これを確認してください: POSTMANでFCM通知をテストしてください!
注:Firebaseは、サーバーキーを新しいバージョンにアップグレードしました。レガシーサーバーキーを引き続き使用できますが、最新バージョンにアップグレードすることをお勧めします。
ヘッダー認証を追加:key=<legacy_server_key>
OR Authorization: key=<server_key>
およびContent-Type: application/json.
(Body> raw> JSON(application/json))を選択し、次のコードを追加します:
{
"to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
"collapse_key" : "type_a",
"notification" : {
"body" : "Body of Your Notification",
"title": "Title of Your Notification"
},
"data" : {
"body" : "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1" : "Value for key_1",
"key_2" : "Value for key_2"
}
}
POSTMANコレクションを作成しました Postmanで直接実行します
それがあなたを助けることを願っています。
POST https://fcm.googleapis.com/v1/projects/projectID/messages:send
ヘッダー:
Authorization:Bearer ya29.c.ElrXBjdxUzOI................o7_Y2shX2Je4tEe0
body:
{
"message": {
"token": "dlqj05MCnNI:APA91bGhCX6NhT.................QDpKhGheHyhhJ6T",
"Android": {
"notification": {
"title": "New Content!",
"body": "A new video has been uploaded.",
"icon": "your_icon"
}
}
}
}
必ずcontent-type:application/jsonヘッダーを含めてください
次のようなコンテンツタイプヘッダーを含めないと、誤解を招くエラーで失敗します。Error= MissingRegistration