60

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

enter image description here

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?

Machado
  • 14,105
  • 13
  • 56
  • 97
  • 2
    { "multicast_id": 4790719999662534961, "success": 0, "failure": 1, "canonical_ids": 0, "results": [ { "error": "InvalidRegistration" } ] } got this error – Vinod Kumar Marupu Nov 02 '16 at 17:02
  • This Article will be helpful to you: https://medium.com/android-school/test-fcm-notification-with-postman-f91ba08aacc3 – Alireza Noorali Jun 03 '19 at 10:19
  • This answer can help: https://stackoverflow.com/a/62670409/1151916 – Ramis Jul 01 '20 at 06:47
  • You can find in this article, [how to fcm send push notifications with postman via firebase messaging API](https://medium.com/@sachinkhard/send-push-notification-via-firebase-by-postman-3f459ea5d170) – Ramesh-X Jul 02 '20 at 03:32

13 Answers13

62

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.

Machado
  • 14,105
  • 13
  • 56
  • 97
53

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:

enter image description here

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:

enter image description here

Now click on Body than select Raw 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.

enter image description here

Good luck!

CybeX
  • 2,060
  • 3
  • 48
  • 115
R15
  • 13,982
  • 14
  • 97
  • 173
36

Posting FCM through POSTMAN

Body - to is token id (should be generated through instance token) write body in raw binary application/json body tye

{
   "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 headerimage after posting here the success message: success message image

24

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:

enter image description here

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.

Simon
  • 19,658
  • 27
  • 149
  • 217
12

POST

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

Header

Content-Type : application/json 
Authorization : key=your_server_key

Body

{ 
    "to" : "your_token",
    "priority": "high",
    "notification": {
        "title": "Title",
        "body" : "First Notification",
        "text": "Text"
    }
}
Aftab Alam
  • 1,969
  • 17
  • 17
11

Look at below screenshot how Authorization key is set

Authorization : **key=**abcdefghijklmnopr2qrst253uv124wxyz_9shg

enter image description here

rohitpaniker
  • 695
  • 1
  • 7
  • 25
6

Have you check this : Test FCM Notification with POSTMAN!

Send Data Message using HTTP protocol with POSTMAN

  • You have to copy Legecy Server Key from Firebase Console > Project Settings > Cloud Messaging

Note: Firebase has upgraded our server keys to a new version. You may continue to use your Legacy server key, but it is recommended that you upgrade to the newest version.

  • Select POST. Enter request URL as https://fcm.googleapis.com/fcm/send

  • Add Headers Authorization: key=<legacy_server_key> OR Authorization: key=<server_key> and Content-Type: application/json.

  • Now Select Body > raw > JSON (application/json) and add following code:

    {
         "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"
         }
    }

I have created POSTMAN Collection for you, Run in Postman directly.

Hope it will helps you.

Community
  • 1
  • 1
Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
4
POST https://fcm.googleapis.com/v1/projects/projectID/messages:send

headers:

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"
          }
        }
      }
    }
anson
  • 1,436
  • 14
  • 16
3

Steps to send FCM throw Postman:

  1. URL to send: https://fcm.googleapis.com/v1/projects/projectid-34543/messages:send
  2. Request Type: POST
  3. Headers: Content-Type -> application/json & Authorization -> Bearer
  4. In the body section enter APS payload with the right device token.
  5. Click send.

More information here: https://stackoverflow.com/a/62670409/1151916

Ramis
  • 13,985
  • 7
  • 81
  • 100
2

İf you want to send the notification to more than one device, you should use "registration_ids" instead of "to" on the body;

 { 
    "registration_ids":[
"somethingTokens7234134143",
"somethingTokens3452343185"
], 

     "notification" : {
     "body" : "New announcement assigned",
     "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"
    }
    }
Kasım Onuk
  • 324
  • 3
  • 6
2

In my case, Cloud Messaging API (Legacy) was disabled from the Firebase console. Check if that section is enabled in your Firebase console enter image description here

Md. Sulayman
  • 781
  • 8
  • 30
0

Be sure to include the content-type : application/json header

it fails with a misleading error if you don't include the content-type header saying: Error=MissingRegistration

-1

enter image description here

What exactly is Server Key? I used (on a pitcure above) server key, and legacy server key but neither of them work.

enter image description here

Does anybody have clue what is wrong? For token -> I used FCM token I got from firebase messaging like this:

firestoreMessaging.getToken()
olga_babic
  • 1,600
  • 3
  • 9
  • 18
  • I think, you have right header, but maybe a configuration of Firebase project is not done. Have you added an Android or iOS application? – CoolMind Jun 25 '19 at 10:04
  • Also you should check `google-services.json` in your Android application. You need to download it from Firebase console and paste into Android application, then run on device. – CoolMind Jun 25 '19 at 15:36
  • This answer is your question: https://stackoverflow.com/questions/56723045/send-push-message-using-firebase-cloud-messaging-what-is-my-server-key. – CoolMind Jun 25 '19 at 15:56