Sending Push via Postman using Firebase Messaging
I'm trying to use Postman to send a single Push Notification using Firebase
Cloud Messaging service.
This is a working cURL
command for the same purposal, on which I'm using as a reference.
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"}"
What I have done so far..
1 - Set the Headers appropriately
2- At Body , I'm using raw
{
"to" : "<YOUR_DEVICE_ID_TOKEN>"
,
"notification": {
"body": "Firebase Cloud Message"
}
}
When executing, I'm getting back 401 - Unauthorized
.
What's missing to correctly send the push notification?
The correct way to set up Authorization
key at Header is
key=<API_ACCESS_KEY>
and not only
<API_ACCESS_KEY>
Silly mistake, but since this could be useful for someone for testing Firebase Messaging with Postman I'm leaving the question opened.
Posting FCM through POSTMAN
Body - to is token id (should be generated through instance token) write body in raw binary application/json
{
"to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
CqjwnUKZ4
ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",
"notification": {
"body": "Hello",
"title": "This is test message."
}
}
header: should have authorization :server key
Content type : application/json after posting here the success message:
Open Postman, click on Enter request URL
textbox, enter firebase url
https://fcm.googleapis.com/fcm/send
Than change request type to POST
. See below screenshot:
Now to click on Header and add two params
Content-Type
and Authorization
.
Content-Type= application/json
Authorization=AIzaSyAEb3NhsfGw1ih5mn8cmrGUAXMp86waQ //FCM SERVER KEY
See below screenshot:
Now click on Body
than select Row
and add value as object like below
{
"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"
}
}
Now your Postman would look like this. Click Send button at top right.
Good luck!
For the new FCM HTTP v1 API, the method of testing push notifications through Postman has changed and the existing solutions only addressed the legacy method of testing push notifications: https://firebase.google.com/docs/cloud-messaging/send-message
To test on Postman with FCM HTTP v1 API, you will need to first fetch a short-lived Oauth 2 token. You can generate one as per the information on the Firebase site here: https://firebase.google.com/docs/cloud-messaging/auth-server
I generated mine using Python using the code below - remember to pip install the package so that you can import the package into your code successfully:
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
Once you have the token - you can insert it into your Postman under authorisation:
IMPORTANT:
In my case, I had struggled a bit to get this to work as I was trying to test a scheduled task that was going to send push notification every few minutes to FCM. I had printed the token to my logs and then taken that token to my Postman for testing, not realising that it already has been used in the scheduled calls to FCM.
In that case, because it has already been used, the token will no longer be valid and my Postman tests were all failing. In this case, you will need to generate fresh tokens for your Postman tests.
Look at below screenshot how Authorization key is set
Authorization : **key=**abcdefghijklmnopr2qrst253uv124wxyz_9shg