Я новичок в firebase. Я установил базу данных реального времени firebase и могу читать и писать в нее, если для правил чтения и записи установлено значение true.Аутентификация базы данных Firebase по электронной почте и паролю
У меня проблема с authentication.i настроили аутентификацию для Google и электронной почты плюс пароль.
моя цель - разрешить любому пользователю читать данные, но только один пользователь (я) может записывать данные после входа в систему, используя один адрес электронной почты и пароль.
я могу успешно читать и писать в базу данных, если я войти в систему с помощью Google (с правилами установлен: AUTH = нуль.)
я также может читать и записывать в базу данных, используя те же правила (auth! = null), если я вхожу в систему с адресом электронной почты и паролем.
Я не знаю, как настроить его, чтобы разрешить доступ для записи только для одного пользователя, входившего в систему с адресом электронной почты и паролем.
Я попытался включить пользовательский узел в правила, но я не могу получить доступ при использовании симулятора (см. Ниже), и я не знаю, как включить uid (который я могу получить после входа в систему), когда строительство ссылки - это ссылки я в настоящее время использую (который работает с чтением и записью правила, установленное к истине):
DatabaseReference databaseReference = mRootReference.child("Action_helper/1/Action_table_of_contents");
я не включил узел пользователей в моей базе данных, как я предполагаю, что это заботившийся от проверки подлинности с помощью firebase.
здесь является расположение моих данных:
я попробовал имитатор, используя различные варианты правил. тестирование доступа с использованием этих параметров в тренажере (выбор опции пользовательского поставщика):
Auth { "поставщик": "firebase", "UID": "Rp3OgoaABMN3hqTv0aF29ECQRCQ2"}
примечания: я получаю поставщик и идентификатор пользователя из Firebase объект после входа в систему с помощью адреса электронной почты и пароль, который я настроил аутентификации Firebase:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// User is signed in
userId = user.getUid();
String provider = user.getProviderId();
Я был бы признателен за помощь в 1) формулировании моих правил, 2) если и как я должен изменить свою структуру данных, и, наконец, 3) как включить uid в ссылку базы данных, которую я буду использовать для записи данных в база данных.
благодаря
Попробуйте переместить «.read„:“правда», к началу узла т.е. поместить его прямо под „правила“:. узел Это позволит любому прочитать от корневого узла до всех других дочернего узла и нет необходимости в проверке подлинности. – 0p3n5ourcE
И для его тестирования вы можете попробовать в симуляторе с проверкой подлинности и попробовать прочитать любой узел. – 0p3n5ourcE
благодарит @openSource за вашу помощь и ссылку на рекомендацию youtube firebase. Я наконец получил его работу по назначению. Я включил && $ uid === 'my email login uid' в правилах написания, чтобы только электронный адрес электронной почты мог записываться в папку пользователя (иначе любой пользователь мог бы написать там). –