11 votes

Dans l'application react native (via Expo) en utilisant les autorisations firestore, request.auth est toujours nul.

Voici mon code :

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        console.log("Nous sommes authentifiés maintenant !");
        firebase.firestore().collection("users")
            .doc(firebase.auth().currentUser.uid).set({ name: "nouveau nom" });
    } else {
        loginWithFacebook();
    }
});

Et voici mes règles de permission :

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null;
    }
  }
}

Il semble que peu importe quoi, request.auth est toujours null. L'erreur que je reçois :

Firestore (4.8.0) 2017-12-20T04:18:27.321Z [Connections] : WebChannel avez une erreur : {"code":403,"message":"Permissions manquantes ou insuffisantes.","status":"PERMISSION_DENIED"}

-1voto

N.K Points 98

Tout d'abord, vérifiez les éléments sur le simulateur d'exécution de règles FIREBASE,

et deuxièmement, votre problème semble être que vos demandes ne sont pas synchronisées, vérifiez vos règles (si possible) dans la vue Web, car j'ai essayé de le faire et ça a fonctionné pour moi

{
      "rules": {
                ".read": "auth != null",
                ".write": "auth != null"
               }
}

-1voto

Mayur Dusane Points 317

Veuillez enregistrer votre UID et confirmer qu'il n'est pas nul. Ensuite, modifier la règle de permission comme suit -

// Accorde à un utilisateur l'accès à un document correspondant à son ID utilisateur Auth
    service cloud.firestore {
       match /databases/{database}/documents {
         // Collection nommée "users", document nommé d'après l'ID utilisateur
       match /users/{userId} {
         allow read, write: if request.auth.uid == userId;
       }
     }
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X