156 votes

Permission refusée pour Firebase

Je suis relativement novice en matière de codage et j'ai des difficultés.

J'ai ce code pour envoyer les données à firebase

app.userid = app.user.uid

var userRef = app.dataInfo.child(app.users);

var useridRef = userRef.child(app.userid);

useridRef.set({
  locations: "",
  theme: "",
  colorScheme: "",
  food: ""
});

Cependant, je continue à obtenir l'erreur :

AVERTISSEMENT FIREBASE : set at /users/(GoogleID) failed : permission_denied 2016-05-23 22:52:42.707 firebase.js:227 Erreur non attrapée (dans la promesse) : PERMISSION_DENIED : Permission denied( )

Lorsque j'essaie de vérifier, il est question de règles pour Firebase, qui semblent être dans un langage que je n'ai pas encore appris (ou qui me dépasse). Quelqu'un peut-il m'expliquer la cause de ce problème ? Je pensais que c'était parce que je demandais à ce qu'il stocke l'email et le nom d'affichage de l'utilisateur et que vous n'étiez tout simplement pas autorisé à le faire, mais lorsque j'ai retiré ces éléments, j'ai toujours le même problème. Existe-t-il un moyen d'éviter cette erreur sans définir les règles, ou est-ce que les règles sont quelque chose que je peux apprendre à écrire en une journée, ou est-ce que je ne suis pas à la hauteur ?

Merci pour toute aide !

4voto

  1. Ouvrez firebase, sélectionnez base de données sur le côté gauche.
  2. Maintenant, sur le côté droit, sélectionnez [Base de données en temps réel] dans la liste et modifiez les règles comme suit :

    { "rules": { ".read": true, ".write": true } }

10 votes

Cela a déjà été dit dans l'autre réponse. De plus, lorsque vous proposez cette solution, assurez-vous d'ajouter un avertissement, car ce n'est pas une sauvegarde !

2voto

Voy Points 1298

PermissionDenied peut également apparaître si l'ID du projet Firebase fourni est incorrect .

Voir ce guide pour vérifier l'ID de votre projet :

Console Firebase : Cliquez sur paramètres Paramètres du projet. L'ID du projet s'affiche dans le volet supérieur.

1voto

ParampalP Points 458

Une autre solution consiste à créer ou à connecter automatiquement l'utilisateur si vous avez déjà les informations d'identification à portée de main. Voici comment je le fais en utilisant Plain JS.

function loginToFirebase(callback)
{
    let email = 'xx@xx.com';
    let password = 'xxxxxxxxxxxxxx';
    let config =
    {
        apiKey: "xxx",
        authDomain: "xxxxx.firebaseapp.com",
        projectId: "xxx-xxx",
        databaseURL: "https://xxx-xxx.firebaseio.com",
        storageBucket: "gs://xx-xx.appspot.com",
    };

    if (!firebase.apps.length)
    {
        firebase.initializeApp(config);
    }

    let database = firebase.database();
    let storage = firebase.storage();

    loginFirebaseUser(email, password, callback);
}

function loginFirebaseUser(email, password, callback)
{
    console.log('Logging in Firebase User');

    firebase.auth().signInWithEmailAndPassword(email, password)
        .then(function ()
        {
            if (callback)
            {
                callback();
            }
        })
        .catch(function(login_error)
        {
            let loginErrorCode = login_error.code;
            let loginErrorMessage = login_error.message;

            console.log(loginErrorCode);
            console.log(loginErrorMessage);

            if (loginErrorCode === 'auth/user-not-found')
            {
                createFirebaseUser(email, password, callback)
            }
        });
}

function createFirebaseUser(email, password, callback)
{
    console.log('Creating Firebase User');

    firebase.auth().createUserWithEmailAndPassword(email, password)
        .then(function ()
        {
            if (callback)
            {
                callback();
            }
        })
        .catch(function(create_error)
        {
            let createErrorCode = create_error.code;
            let createErrorMessage = create_error.message;

            console.log(createErrorCode);
            console.log(createErrorMessage);
        });
}

1voto

Si vous tentez de réutiliser un ancien projet dans firebase, en raison des restrictions du compte gratuit, alors les règles de votre base de données sont probablement obsolètes.

Dans mon cas, je recevais l'erreur 401 Unauthorized et cela s'est résolu lorsque j'ai mis les règles de lecture et d'écriture à true.

Merci pour cette grande communauté !

Beaucoup de respect de la part du Brésil !

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