Ошибка базы данных: ошибка отказа в доступе в FireBase - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь интегрировать Firebase в свое приложение для Android. Я выполнил действия, задокументированные пожарной базой.Когда я пытаюсь отправить данные, я не могу отправить.Я получаю ниже ошибку в обратном вызове

**Permission denied**

И код ошибки в обратном вызове -3

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

Отказано в разрешении Firebase

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

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

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

service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
  allow read, write: if true;
}
}
}

Моя проблема в том, что я получаю ошибку «Отказано в доступе» при подключении базы данных.Когда я добавляю код, упомянутый в потоке, база Fire не распознает этот код.Как правильно разместить код, если есть необходимость?Или почему я получаю эту ошибку?Я что-то упустил.

Ниже приведен код, который я использую для связи с firebase

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);

    mDatabaseReference = FirebaseDatabase.getInstance().getReference();
    DatabaseReference databaseReference = mDatabaseReference.child("users");

    //Get Firebase auth instance
    //auth = FirebaseAuth.getInstance();


    btnSignIn = findViewById(R.id.sign_in_button);
    btnSignUp = findViewById(R.id.sign_up_button);
    inputEmail = findViewById(R.id.email);
    inputPassword = findViewById(R.id.password);
    progressBar = findViewById(R.id.progressBar);
    btnResetPassword = findViewById(R.id.btn_reset_password);

    btnResetPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //startActivity(new Intent(SignupActivity.this, ResetPasswordActivity.class));
        }
    });

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String email = inputEmail.getText().toString().trim();
            String password = inputPassword.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (password.length() < 6) {
                Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
                return;
            }

            progressBar.setVisibility(View.VISIBLE);

            User user = new User();
            user.setEmail(email);
            user.setPassword(password);
            user.setUserType(1);

            mDatabaseReference.child("users").setValue(user, new DatabaseReference.CompletionListener() {
                @Override
                public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {

                    progressBar.setVisibility(View.GONE);

                    databaseReference.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            dataSnapshot.exists();
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {
                            databaseError.getCode();
                        }
                    });

                }
            });


        }
    });
}

ПРИМЕЧАНИЕ: Ошибка setValue в / users: DatabaseError: В доступе отказано этожурнал я получаю.

1 Ответ

0 голосов
/ 14 декабря 2018

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

1 - либо зарегистрируйте пользователя с помощью firebase, прежде чем вставлять данные

или

2 - Разрешить неавторизованным пользователям также писать в базу данных

Правило: -

{
  "rules": {

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

enter image description here

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