Règles Firebase - Impossible de stocker les données utilisateur lors de la première connexion

voix
0

Je suis assez nouveau pour Firebase et je ne parviens pas à mes règles de sécurité. J'ai un client Android qui enregistre ou les journaux dans un nouvel utilisateur. Lors de la première connexion, j'enregistrer leurs données de cet utilisateur au firebase comme ceci:

public void onAuthenticated(AuthData authData) {
                //Save user data to firebase
                Map<String, Object> map = new HashMap<String, Object>();
                map.put(provider, authData.getProvider());
                ref.child(users).child(authData.getUid()).updateChildren(map);
}

(Ceci est appelé dans onAuthenticated () lors de l'authentification d'un utilisateur)

Cependant, il semble que mes règles de sécurité ne permettent pas à l'utilisateur d'écrire à la base de données à moins que leurs données sont déjà stockées. Mes règles sont les suivantes:

{
rules: {
   users:{
      $userid: {
        .read: auth.id == $userid && auth !== null,
        .write: auth.id == $userid && auth !== null
      }
    }
  }
}

En outre, si elle compte, voici un exemple de ce que les données ressemble quand il est stocké: un

Comment dois-je modifier mes règles pour permettre au client d'écrire les données utilisateur une fois qu'il authentifie avec le serveur?

EDIT: Après quelques essais, il semble que ces règles ne permettent pas à l'utilisateur d'écrire quoi que ce soit à leur noeud utilisateur, même si elle existe déjà.

Créé 05/11/2014 à 05:28
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
5

Vous avez une faute de frappe dans vos règles que vous avez:

    ".write": "auth.id == $userid && auth !== null"

Cela devrait être auth.uid, non auth.id.

Je voudrais aussi faire le chèque nul en premier.

Alors:

    ".write": "auth !== null && auth.uid == $userid"
Créé 05/11/2014 à 15:33
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more