Firebase权限被拒绝

时间:2017-12-26 21:58:28

标签: android firebase firebase-realtime-database kotlin firebase-security

我是firebase的新手。

我如何完成以下规则?

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

我试图将规则更改为以下,

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

但是

错误
mismatched input '{' expecting {'function', 'service', 'syntax'}

以下是db结构。

db structure

目前,这是我的代码(不断返回Permission-denied):

    // [START initialize_database_ref]
    mDatabase = FirebaseDatabase.getInstance().reference
    // [END initialize_database_ref]

    val result = HashMap<String, Any> ()
    result.put("timestamp", getCurrentTime())
    result.put("user_id", USER_ID)
    result.put("x_position", -1)
    result.put("y_position", -1)

    mDatabase!!.ref.child("raw data").child("Z9QD79lDzP7MpD6feWeJ").setValue(result).addOnFailureListener(object : OnFailureListener {
        override fun onFailure(@NonNull e: Exception) {
            Log.d("firebase", e.localizedMessage)
        }
    })

任何帮助将不胜感激!谢谢:))

3 个答案:

答案 0 :(得分:23)

我能够通过从Cloud Firestore切换到实时数据库,然后更改规则来解决问题。 (在我改变之后,没有更多的错误显示!) enter image description here

答案 1 :(得分:2)

对于遇到此问题的其他人,正确的解决方案是更改<{p>中的false

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

测试时到true在项目上线时不要忘记添加额外的安全性!

答案 2 :(得分:1)

因为您的方法查询Firebase而不是Cloud Firestore 所以你应该使用这个方法:

FirebaseFirestore db = FirebaseFirestore.getInstance();
    db.collection("YourCollectionName").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    Log.d(TAG, document.getId() + " => " + document.getData());
                }
            } else {
                Log.w(TAG, "Error getting documents.", task.getException());
            }
        }
    });

别忘了这个:

implementation 'com.google.firebase:firebase-firestore:17.0.1'