Разрешение Военнослужащих Отказано
Я относительно новичок в кодировании и у меня возникли проблемы.
У меня есть этот код для отправки данных в 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 ответа:
по умолчанию база данных в проекте в новая консоль 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. // ... } // ... });