500 internal server error while sending push notifications

35 Views Asked by At

In my flutter app I am trying to send push notifications using firebase_messaging, And to achieve this I am using node.js to make api requests. This is how my node.js code looks

import {initializeApp, applicationDefault } from 'firebase-admin/app';
import { getMessaging } from "firebase-admin/messaging";
import express from "express";
import cors from "cors";


process.env.GOOGLE_APPLICATION_CREDENTIALS;

const app = express();
app.use(express.json());

app.use(
  cors({
    origin: "*",
  })
);

app.use(
  cors({
    methods: ["GET", "POST", "DELETE", "UPDATE", "PUT", "PATCH"],
  })
);

app.use(function(req, res, next) {
  res.setHeader("Content-Type", "application/json");
  next();
});


initializeApp({
  credential: applicationDefault(),
  projectId: 'faekbank-app',
});

app.post("/send", function (req, res) {
  const receivedToken = req.body.fcmToken;
  
  const message = {
    notification: {
      title: "Notif",
      body: 'This is a Test Notification'
    },
    token: receivedToken,
  };
  
  getMessaging()
    .send(message)
    .then((response) => {
      res.status(200).json({
        message: "Successfully sent message",
        token: receivedToken,
      });
      console.log("Successfully sent message:", response);
    })
    .catch((error) => {
      res.status(400);
      res.send(error);
      console.log("Error sending message:", error);
    });
  
  
});

app.listen(3000, function () {
  console.log("Server started on port 3000");
});

When I send a post request to the endpoint /send, I get this error:

Error: Exactly one of topic, token or condition is required
    at validateMessage (/opt/render/project/src/node_modules/firebase-admin/lib/messaging/messaging-internal.js:53:15)
    at Messaging.send (/opt/render/project/src/node_modules/firebase-admin/lib/messaging/messaging.js:185:50)
    at file:///opt/render/project/src/index.js:47:6
    at Layer.handle [as handle_request] (/opt/render/project/src/node_modules/express/lib/router/layer.js:95:5)
    at next (/opt/render/project/src/node_modules/express/lib/router/route.js:144:13)
    at Route.dispatch (/opt/render/project/src/node_modules/express/lib/router/route.js:114:3)
    at Layer.handle [as handle_request] (/opt/render/project/src/node_modules/express/lib/router/layer.js:95:5)
    at /opt/render/project/src/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/opt/render/project/src/node_modules/express/lib/router/index.js:346:12)
    at next (/opt/render/project/src/node_modules/express/lib/router/index.js:280:10)

Can someone help to solve this error.

Please help in understanding, what is going wrong.

0

There are 0 best solutions below