Adrián Varga
Adrián Varga

Reputation: 101

Firebase cloud functions / One works, other (same function) not works

I am very nervous.. I can't test normally firebase cloud functions, because a lot of things don't work. I tested it, I copied same function with a different name, the new function don't work. Why???? Why working helloworld and why not working tryhello???

cloud functions nodejs index.js:

    const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();


exports.tryHello = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});


exports.helloWorld = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});

Unity C#:

    public void testbutton()
    {
        var data = new Dictionary<string, object>();
        data["text"] = "example";

 //I tested "tryHello" and helloWorld"

        FirebaseFunctions.DefaultInstance.GetHttpsCallable("tryHello")
.CallAsync(data).ContinueWith((task) =>
{
if (task.IsFaulted)
{
          // Handle the error...
          print("error");

}
else if (task.IsCompleted)
{
        IDictionary snapshot = (IDictionary)task.Result.Data;

        print("Result: " + snapshot["text"]);

    }
}

Result:

1. First, I write unity: GetHttpsCallable("helloWorld") and save.

I start game, login, then I click testbutton.

result: firebase console: success create example collection, example document, country:examplecountry, name:examplename, state:examplestate. Ok good.

unity log:

1. User signed in successfully: Jane Q. User (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug:LogFormat(String, Object[]) loginfire:b__10_0(Task1) (at Assets/loginfire.cs:155) 2. Result: success. uid:qQC3wEOU95eDFw8UuBjb0O1o20G2 UnityEngine.MonoBehaviour:print(Object) <>c:<testbutton>b__16_0(Task1) (at Assets/loginfire.cs:411) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

cloud functions "helloWorld" log: Function execution started Function execution took 3020 ms, finished with status code: 200

Ok. I delete "example" collection in firebase console.

2. Second, I write unity: GetHttpsCallable("tryHello") and save.

I start game, login, then I click testbutton.

result: not create collection.

unity log:

*1. User signed in successfully: Jane Q. User (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug:LogFormat(String, Object[]) loginfire:b__10_0(Task`1) (at Assets/loginfire.cs:155) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

  1. error UnityEngine.MonoBehaviour:print(Object) <>c:b__16_0(Task`1) (at Assets/loginfire.cs:396) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()*

cloud functions "tryHello" log: nothing...

Why? I don't understand. same, only the name is different!

And.. in many cases it show success but still does not update the database. or just much later. why? Lately, "helloWorld" also often writes an error, if I don't press the testbutton immediately after logging in, it can't read the uid.

I start to get tired of the system right from the start.

Thanks..

Upvotes: 0

Views: 364

Answers (1)

Adri&#225;n Varga
Adri&#225;n Varga

Reputation: 101

Solved!

I needed it configured to cloud console "tryHello" permission settings. (Not same helloworld settings.)

Lately, "helloWorld" also often writes an error, if I don't press the testbutton immediately after logging in, it can't read the uid.

-> I needed declared Firebasauth within testbutton().

Sorry for the question, thanks.

Upvotes: 1

Related Questions