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
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);
}
});
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.");
}
});
}