Разрешение Военнослужащих Отказано


Я относительно новичок в кодировании и у меня возникли проблемы.

У меня есть этот код для отправки данных в 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: ""
});

однако, я продолжаю получать сообщение об ошибке:

опорному пункту предупреждение: установка в /пользователи/(GoogleID) не удалось: permission_denied 2016-05-23 22:52: 42.707 огневая база.js: 227 Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied (...)

когда я пытаюсь найти это, он говорит о правилах для Firebase, которые кажется, на языке, который я еще не изучил (или он просто идет над моей головой). Может кто-нибудь объяснить, что вызывает проблему? Я думал, что это было то, что я просил его хранить электронную почту и отображаемое имя пользователя, и вам просто не разрешалось это делать, но когда я вынул их, у меня все еще была та же проблема. Есть ли способ избежать этой ошибки, не устанавливая правила, или правила-это то, что я могу научить себя писать за день, или я просто выход из своей лиги?

спасибо за любую помощь!

2 57

2 ответа:

по умолчанию база данных в проекте в новая консоль Firebase читается / записывается только аутентифицированными пользователями:

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

посмотреть краткое руководство по правилам безопасности базы данных Firebase.

поскольку вы не входите в систему пользователя из своего кода, база данных запрещает вам доступ к данным. Чтобы решить эту проблему, вам нужно будет либо разрешить неавторизованный доступ к базе данных, либо войти в систему пользователя перед доступом база данных.

разрешить несанкционированный доступ к базе данных

самый простой обходной путь на данный момент (пока учебник не будет обновлен) - это зайти в панель базы данных в консоли для вашего проекта, выбрать вкладку правила и заменить содержимое этими правилами:

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

это делает вашу новую базу данных читаемой и доступной для записи всеми. Обязательно защитите свою базу данных снова, прежде чем вы перейдете в производство, иначе кто-то, скорее всего, начнет злоупотребляя им.

вход пользователя перед доступом к базе данных

для (немного) более трудоемкого, но более безопасного решения, вызовите один из signIn... способы Проверка Подлинности Firebase чтобы убедиться, что пользователь вошел в систему перед доступом к базе данных. Самый простой способ сделать это - использование анонимной аутентификации:

firebase.auth().signInAnonymously().catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

а затем прикрепите ваши слушатели, когда вход обнаружен

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.
    // ...
  }
  // ...
});
  1. откройте firebase, выберите база данных на левой стороне.
  2. теперь на правой стороне выберите [база данных в реальном времени] из выпадающего списка и измените правила на: { "правила": { ".читать": правда, ".написать": правда } }

это работает..!!