Problème cloud function firebase

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Megoza
Messages : 1
Inscription : 27 Nov 2024 11:19

Problème cloud function firebase

Message par Megoza » 27 Nov 2024 14:21

Bonjour à tous,

J’ai un petit soucis sur mon projet Unity. J’utilise firebase/firebase realtime/firebase function.

À la création de mon compte j’utilise une cloud function qui fonctionne comme je le souhaite, ça me crée bien mon compte avec toutes les info dans la db comme par exemple Users/UID/currency.
J’ai fait un simple bouton pour tenter de modifier les currency via une cloud function. En cliquant sur le bouton le but est de gagner 100 currency pour l’utilisateur connecté.
Le problème est que en cliquant sur le bouton l’appel de la cloud function ne se fait pas donc je n’ai même pas d’erreur dans la fonction add currency, et je n’arrive pas à comprendre pourquoi, si quelqu’un arriverait à m’éclaircir ce serait gentil :-D

Ma cloud function :

Code : Tout sélectionner

 exports.addCurrency = functions
  .region('europe-west1')
  .https.onCall(async (data, context) => {
    const userId = data.userId;
    const amount = data.amount;

    if (!userId || !amount) {
      throw new functions.https.HttpsError('invalid-argument', 'Les paramètres userId ou amount sont manquants');
    }

    const userRef = admin.database().ref('users').child(userId);

    try {
      // Transaction pour ajouter de la monnaie
      const result = await userRef.child('currency').transaction((currentCurrency) => {
        const newCurrency = (currentCurrency || 0) + amount;
        return newCurrency;
      });

      if (result.committed) {
        return { success: true, message: `Monnaie ajoutée : ${amount}` };
      } else {
        throw new functions.https.HttpsError('internal', 'Erreur lors de l\'ajout de la monnaie');
      }
    } catch (error) {
      console.error("Erreur lors de l'ajout de la monnaie", error);
      throw new functions.https.HttpsError('internal', 'Erreur lors de l\'ajout de la monnaie', error);
    }
  });
Et mon script CS

Code : Tout sélectionner

 // Fonction pour ajouter des currency via Cloud Function
    private void OnAddCurrencyButtonClick()
    {
        FirebaseFunctions functions = FirebaseFunctions.DefaultInstance;
        var addCurrencyData = new Dictionary<string, object>
        {
            { "userId", userId },
            { "amount", 100 }
        };

        functions.GetHttpsCallable("addCurrency").CallAsync(addCurrencyData).ContinueWithOnMainThread(task =>
        {
            if (task.IsCompleted)
            {
                Debug.Log("Récompense ajoutée avec succès !");
                GetUserData();  // Récupérer à nouveau les données après l'ajout
            }
            else
            {
                Debug.LogError("Erreur lors de l'ajout de la récompense.");
            }
        });
    }
Merci!

Répondre

Revenir vers « Scripting »