web-dev-qa-db-ja.com

firestore:PERMISSION_DENIED:権限がないか、不十分です

エラーが発生しています

gettingdocuments.com.google.firebase.firestore.FirebaseFirestoreException:PERMISSION_DENIED:権限がないか、不十分です。

elseステートメントの次のコード

db.collection("users")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                 if (task.isSuccessful()) {
                     for (DocumentSnapshot document : task.getResult()) {
                         s(document.getId() + " => " + document.getData());
                     }
                 } else {
                     s("Error getting documents."+ task.getException());
                 }
             }
         });
39
S Rekhu

注:これにより、データベースのセキュリティが完全に無効になり、認証なしでデータベースに書き込み可能になります!!!これは推奨する解決策ではありません。

それは単に私のために動作します。

データベースに移動->ルール->

allow read, write: iffalse;true;に変更します

57
Luvnish Monga

データベース-> ルールに移動します:

その後ルールの下で変更されました

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

以下へ

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}
23

dBが空でないこと、クエリが存在しないコレクションに対するものであることを確認してください

4
itzhar

したがって、私の場合、次のDBルールがありました。

service cloud.firestore {
  match /databases/{database}/documents {
    match /stories/{story} {
      function isSignedIn() {
        return request.auth.uid != null;
      }

      allow read, write: if isSignedIn() && request.auth.uid == resource.data.uid
    }
  }
}

ご覧のとおり、uidドキュメントには、所有者を示すstoryフィールドがあります。

それから私のコードでは、すべてのストーリー(Flutter)を照会していました。

Firestore.instance
          .collection('stories')
          .snapshots()

また、別のユーザーを介していくつかのストーリーを既に追加しているため、失敗しました。これを修正するには、クエリに条件を追加する必要があります。

Firestore.instance
          .collection('stories')
          .where('uid', isEqualTo: user.uid)
          .snapshots()

詳細はこちら: https://firebase.google.com/docs/firestore/security/rules-query

3
rwozniak

さらに、コードからのコレクション参照がfirebaseのコレクション名と一致しない場合、このエラーが発生する可能性があります。

たとえば、firebaseのコレクション名はusersですが、db.collection("Users")またはdb.collection("user")を使用して参照しています

大文字と小文字も区別されます。

これが誰かを助けることを願っています

1
Anga Koko

上記の回答は、データベースの状態にとって危険です。書き込みではなく読み取り専用でデータベースを使用可能にすることができます。

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