Разрешение Firebase отказано - PullRequest
       20

Разрешение Firebase отказано

1 голос
/ 18 октября 2019

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

{
"rules": {
   "Users": {
      //".read": true,
      //".write": "auth.token.phone == newData.val()",
      //".read": "auth.uid != null",
      //".write": "newData.child('Personal Details').child('phone').val() === auth.token.phone"
      "$userNumber": {
        "Personal Details": {
          ".read": "auth.uid != null",
          ".write": "auth.token.phone == $userNumber"
        },
        "Notifications": {
        ".read": "auth.token.phone === $userNumber",
        ".write": "auth.uid != null"
      },
  }

Обновление токена после этоговызов функции

FirebaseAuth.getInstance().getCurrentUser().getIdToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {

        @Override
        public void onComplete(@NonNull Task<GetTokenResult> task) {
            Log.d("firebaseFunctionCall", "onComplete: token refreshed");
            checkUser();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            loadingBar.dismiss();
            Log.d("firebaseFunctionCall", "onFailure: failed to refresh error: "+e.getMessage());
        }
    });

здесь я делаю, когда пользователь проверяет свой номер, тогда его номер телефона также добавляется в базу данных

Но я получаю Database Permission denied ошибку.

userRef = FirebaseDatabase.getInstance().getReference().child("Users");

Если вам нужна дополнительная информация, пожалуйста, спросите меня. но, пожалуйста, помогите мне с этой проблемой.

1 Ответ

1 голос
/ 18 октября 2019

Ваш запрос пытается получить все содержимое узла Users, но ваши правила безопасности этого не позволяют. Правила не будут отфильтровывать узлы, к которым пользователь не может получить доступ (пожалуйста, прочитайте и поймите эту ссылку). Вам нужно будет выбрать только ту часть базы данных, к которой пользователю предоставлен доступ по правилам. Это означает, что ваши правила разрешают доступ только к «Пользователи / номер / Личные данные» и «Пользователи / номер / Уведомления» и ничего больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...