Как подключиться к firebase?

442
04 мая 2017, 15:11

При разработке приложения на Реакте появилась такая проблема. Есть Удаленная база данных Firebase, из которой мне нужно выгружать данные. Есть аналогичное приложение на Андроид, которое работает правильно без ошибок, а react-приложение не может подключиться к firebase. Скажу сразу, что у меня права доступа к базе настроены так:

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

Когда я выставляю значения свойств true я получаю доступ к базе, но не хочу так делать, так как я открываю свободный доступ к своей базе. А вот код подключения к firebase из js приложения, здесь я вставляю конфиг, который мне сам firebase отдал:

import firebase from 'firebase';
const config = {
  apiKey: "***",
  authDomain: "***",
  databaseURL: "***",
  projectId: "***",
  storageBucket: "***",
  messagingSenderId: "***"
};
firebase.initializeApp(config);
export const database = firebase.database();
export const auth = firebase.auth();

При firebase.auth() выдает null При попытке вывести данные из базы я получаю такое сообщение:

permission_denied at /restaurants: Client doesn't have permission to access the desired data

Как можно решить эту проблему?

Answer 1

Права доступа настроены вполне нормально. То есть, такая запись вполне легальна:

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

Это можно найти здесь: Get Started with Database Rules, ну и посмотреть для ознакомления тут тоже: User Based Security.

Если на этой строке вы получаете null:

export const auth = firebase.auth();

А во время попытки получить данные из базы получили сообщение, что "у клиента нет разрешения на доступ к нужным данным", значит, что попытка авторизации завершилась неудачно. Значит пользователь не авторизован. Нужно править config и устанавливать верные значения.

Как только в этой строке будет не null:

export const auth = firebase.auth();

Тогда и будет пользователь авторизован и данные можно будет получить. Для справки:

  • firebase.auth
  • firebase.auth.Auth
  • Manage Users in Firebase
Answer 2

Все сделал как написано в документации аутентификации, в итоге подключился к firebase, все работает, спасибо. Но у меня теперь появился другой вопрос. Я у себя на фронте прописываю email и пароль пользователя, чтобы авторизоваться, но получается любой, кто зайдет в исходный код сможет увидеть мои данные для входа в мою почту? Как от этого можно защититься?

P.S. Пишу с другого аккаунта, так как временно не имею доступ на аккаунт ТС

READ ALSO
TypeError: Cannot set property '0' of undefined

TypeError: Cannot set property '0' of undefined

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

225
Не рисуется canvas на неактивной вкладке

Не рисуется canvas на неактивной вкладке

ЗдравствуйтеПроблема состоит в том, что когда я запускаю рисование на одной вкладке, перехожу на вторую, а через 5 (без разницы сколько) секунд...

223
Carousel (Angular 2)

Carousel (Angular 2)

Я пытаюсь написать свою собственную карусель на Angular2, но не знаю как это сделать правильно ( тк

281
GETTEXT перевод для отдельных JS скриптов

GETTEXT перевод для отдельных JS скриптов

Как сделать перевод, для скриптов, которые выводят текст в тэги если они такие:

356