[Résolu] FireBase GetAuthToken


#1

Bonjour,
Quelqu’un saurait expliquer comment bien utiliser Firebase ?
Je fait des test par ci et par la, mais plusieurs chose que je ne comprend pas.
Comment avoir le “Firebase::GetAuthToken()”, je ne comprend pas quel argument il faut placer dans les parenthèses.

EDIT:
Pour le database aussii j’ai vu sur les page gdevelop les permissions:

> {
>     "rules": {
>         "users": {
>             "$uid": {
>                 ".read": true,
>                 ".write": "auth != null"
>             }
>         }
>     }
> }

Es-ce prêt a l’emploi et comment utiliser , ou faut t-il changer quelque chose ?


#2

Oups, c’est une erreur de ma part, il n’y a pas besoin d’argument et ca peut être ignoré. Mais pourquoi veut tu utiliser le token? C’est en gros le mot de passe qui prouve a Firebase que tu est bien l’utilisateur que tu prétends être, si tu veux identifier un utilisateur, utilise plutôt GetUserUID().

C’est pret a l’emploi si ca fait ce que tu veux ¯\_(ツ)_/¯
Cette regle la dit “Les sous variables de la variable users peuvent être lues, et si l’utilisateur est authentifié elles peuvent être écrites aussi”. J’imagine que c’est ok pour contenir des sauvegardes en lignes du jeu d’un utilisateur, mais n’importe qui peut écrire les données des autres, donc je ferais plutot

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && $uid == auth.uid",
        ".write": "auth != null && $uid == auth.uid"
      }
    }
  }
}

Cela laisse chaque utilisateur accéder qu’aux variables nommées par leur ID utilisateur.

Tu peux utiliser les règles en les mettant dans l’onglet règles de la console Firebase:


#3

Es-ce normal que le jeu plante quand je fait ça ?:


#4

Presque toutes les actions sont asynchrone, ce qui veut dire que elles n’attendent pas d’avoir fini pour continuer a exécuter les évènements (c’est entre autres pourquoi il y a pleins d’actions qui utilisent des variables callback au lieu d’expressions, vu que les expressions se termineraient avant d’avoir eu le résultat, et la valeur serait toujours vide). De ce fait, tu n’est pas encore authentifié après avoir appelé l’action. Tant que tu n’est pas authentifié, il n’est pas possible d’utiliser des expressions/actions nécessitant cette authentification. Au lie de mettre en sous évènement, utilise un évènement a part aui attends que l’authentification soit terminée avec trigger once:

Au fait, pas besoin de mettre l’user id dans une variable, utilise tout simplement directement Firebase::GetUserUID() au lieu de VariableString(UserID).


#5

D’accord, il faudrait le préciser cela , non?

Je t’embête encore, pour le database j’ai fait ça:
image
Et j’ai mit les permissions que tu m’a donner, mais j’ai comme retour que la permissions est refusé :no_mouth:
Le chemin est pas bon ?


#6

Avec la règle que j’ai donné, le seul chemin autorisé est "users/" + Firebase.GetUserUID()


#7

Yes ça marche, je comprend tout de suite mieux.
Merci a toit, je pense que j’ai se qu’il faut :smiley:


#8

Je suis content d’avoir pu t’aider!


#9

Ah j’ai une question, quand on change de scène, faut-il refaire l’authentification ?


#10

Non, a priori meme en quittant le jeu l’authentification devrait rester.