1

I wrote and deployed a Firebase Cloud function with CORS support:

const cors = require('cors')({
    origin: true
  });
...
exports.test = functions.https.onRequest((req, res) => {

    cors(req, res, () => {
        const idToken = req.query.idToken;
        admin.auth().verifyIdToken(idToken)
           .then((decoded) => {
               var uid = decoded.uid;
               return res.status(200).send(uid);
         })
          .catch((err) => res.status(401).send(err));
    });

});

I call the HTTP Trigger from my React app using the Axios package:

   firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
        // Send token to your backend via HTTPS
        // ...
        console.log(idToken);
        axios.get('https://XXX.cloudfunctions.net/test?idToken='+idToken)
        .then(response => console.log(response));

      }).catch(function(error) {
        // Handle error
      });

Unfortunately, when running the app on my local server, I still get an error:

Failed to load...Redirect From..to..
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

PS. I have used the procedure reported here

Claus
  • 5,662
  • 10
  • 77
  • 118

1 Answers1

-1

I found an answer here

exports.test = functions.https.onRequest((req, res) => {
    cors(req, res, () => {});

    const idToken = req.query.idToken;
    admin.auth().verifyIdToken(idToken)
      .then((decoded) => {
        var uid = decoded.uid;
        return res.status(200).send(uid);
      })
      .catch((err) => res.status(403).send(err));    
});
Claus
  • 5,662
  • 10
  • 77
  • 118