Par défaut, la base de données d'un projet dans le dossier Console Firebase est uniquement lisible/inscriptible par les utilisateurs administratifs (par exemple, dans les fonctions du cloud ou les processus qui utilisent un SDK administrateur). Les utilisateurs des SDK côté client ordinaires ne peuvent pas accéder à la base de données, sauf si vous modifiez les règles de sécurité côté serveur.
Vous pouvez modifier les règles de manière à ce que la base de données ne puisse être lue/écrite que par des utilisateurs authentifiés :
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Voir le Démarrage rapide pour les règles de sécurité de la base de données Firebase .
Mais comme vous ne signez pas l'utilisateur à partir de votre code, la base de données vous refuse l'accès aux données. Pour résoudre ce problème, vous devrez soit autoriser un accès non authentifié à votre base de données, soit identifier l'utilisateur avant d'accéder à la base de données.
Autoriser l'accès non authentifié à votre base de données
La solution la plus simple pour le moment (jusqu'à ce que le tutoriel soit mis à jour) est d'aller dans le panneau Base de données de la console de votre projet, de sélectionner l'onglet Règles et de remplacer le contenu par ces règles :
{
"rules": {
".read": true,
".write": true
}
}
Cela permet à votre nouvelle base de données d'être lue et écrite par toute personne connaissant l'URL de la base de données. Veillez à sécuriser à nouveau votre base de données avant de passer en production, sinon quelqu'un risque d'en abuser.
Identifier l'utilisateur avant d'accéder à la base de données
Pour une solution (légèrement) plus longue, mais plus sûre, appelez l'un des services suivants signIn...
méthodes de Authentification Firebase pour s'assurer que l'utilisateur est connecté avant d'accéder à la base de données. La façon la plus simple de procéder est la suivante utiliser l'authentification anonyme :
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Et ensuite, attachez vos écouteurs lorsque l'identification est détectée.
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var isAnonymous = user.isAnonymous;
var uid = user.uid;
var userRef = app.dataInfo.child(app.users);
var useridRef = userRef.child(app.userid);
useridRef.set({
locations: "",
theme: "",
colorScheme: "",
food: ""
});
} else {
// User is signed out.
// ...
}
// ...
});