Правила Cloud Firestore разрешают только автору читать документ

У меня есть следующий документ

Правила Cloud Firestore разрешают только автору читать документ

и я установил следующие правила

Правила Cloud Firestore разрешают только автору читать документ

Каждый раз, когда я пытаюсь прочитать документ с помощью Android SDK

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("users").get().addOnCompleteListener(appExecutors
                     .networkIO(),
             task -> {});

Я получаю эту ошибку

"com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions."

Я не уверен, что не так, это правила или вызов Android.

0
0
576
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Похоже, вы хотели ввести в правиле resource.data.author_id вместо resource.data.author_d.

Спасибо, но, думаю, проблема не в этом. Это был всего лишь образец кода. в оригинале этой опечатки не было

Mustafa ALMulla 20.04.2018 21:51

Этот код пытается получить доступ к каждому документу во всей коллекции пользователей:

db.collection("users").get()

Если в этой коллекции есть какой-либо документ, нарушающий установленные вами правила безопасности, он завершится ошибкой.

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

Я думаю, вы можете исправить это с помощью консоли firebase. Вам просто нужно разрешить доступ всем пользователям. Насколько я помню, по умолчанию были разрешены только авторизованные пользователи.

Ответ принят как подходящий

Кажется, мне пришлось добавить где-то рядом в моем коде

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    FirebaseFirestore.setLoggingEnabled(true);
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    db.collection("users").whereEqualTo("authorId",user.getUid()).get().addOnCompleteListener(appExecutors.networkIO(),task -> {});

Другие вопросы по теме