Par défaut, la base de données d'un projet dans la console Firebase n'est lisible / inscriptible que par les utilisateurs administratifs (par exemple dans Cloud Functions ou les processus qui utilisent un SDK Admin). Les utilisateurs des SDK côté client standard 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 afin que la base de données ne soit lisible / inscriptible que par les utilisateurs authentifiés:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Consultez le guide de démarrage rapide pour les règles de sécurité de la base de données Firebase .
Mais comme vous ne connectez 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 l'accès non authentifié à votre base de données, soit vous connecter à l'utilisateur avant d'accéder à la base de données.
Autorisez l'accès non authentifié à votre base de données
La solution de contournement la plus simple pour le moment (jusqu'à ce que le didacticiel soit mis à jour) consiste à accéder au panneau Base de données de la console pour votre projet, à sélectionner l'onglet Règles et à remplacer le contenu par ces règles:
{
"rules": {
".read": true,
".write": true
}
}
Cela rend votre nouvelle base de données lisible et inscriptible par quiconque connaît l'URL de la base de données. Assurez-vous de sécuriser à nouveau votre base de données avant de passer en production, sinon quelqu'un risque de commencer à en abuser.
Connectez-vous à l'utilisateur avant d'accéder à la base de données
Pour une solution (légèrement) plus longue, mais plus sécurisée, appelez l'une des signIn...
méthodes d' authentification Firebase pour vous assurer que l'utilisateur est connecté avant d'accéder à la base de données. Le moyen le plus simple de le faire est d' utiliser l'authentification anonyme :
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Et puis attachez vos écouteurs lorsque la connexion 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.
// ...
}
// ...
});