cloud function testing failing "Invalid request, unable to process."

I have written a simple cloud function which I also deployed already to firebase and the code works. It is the following function:

exports.testfunction = functions.https.onCall(async (data) => {
     const mydata = JSON.parse(data)
     const mydata1 = JSON.parse({const1: "AAA", const2: "BBB", const3: "CCC"})
     return{mydata1}
 });

Now that I want to test this function localy, Im running the following command in my terminal: firebase emulators:start and I get no errors so far. Anyways as soon as I try to call the function with http://localhost:5001/MYPROJECTNAME/us-central1/testfunction in my browser, Im receiving the following error message which I can not find any workaround for:

{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}

The thing is, the function itself is working great if I deploy it and call it from inside my app, but Im failing to run it from my firebase emulator inside the console. What am I doing wrong here?

Upvotes: 4

Views: 4083

Answers (1)

Renaud Tarnec
Renaud Tarnec

Reputation: 83048

As explained in the documentation for Callable Cloud Functions:

It's important to keep in mind that HTTPS callable functions are similar but not identical to HTTP functions. To use HTTPS callable functions you must use the client SDK for your platform together with the functions.https backend API (or implement the protocol).

So, if you want to directly call the function via it's URL, your HTTP Request needs to follow the protocol specification for https.onCall.

Upvotes: 5

Related Questions