android - फायरबेस चैट ऐप सेटवैल्यू एक सार्वजनिक डेटाबेस के साथ त्रुटि हुई?




firebase firebase-realtime-database (2)

आपका कोड फायरबेस रियलटाइम डेटाबेस का उपयोग कर रहा है, लेकिन आप क्लाउड फायरस्टार के लिए सुरक्षा नियमों को बदल रहे हैं। जबकि दोनों डेटाबेस फायरबेस का हिस्सा हैं, वे पूरी तरह से अलग हैं और एक के लिए सर्वर-साइड सुरक्षा नियम, दूसरे पर लागू नहीं होते हैं।

जब आप डेटाबेस पैनल फायरबेस कंसोल में जाते हैं, तो आप क्लाउड फायरस्टोर नियमों में सबसे अधिक संभावना रखते हैं :

यदि आप फायरबेस कंसोल में क्लाउड फायरस्टार नियमों पर हैं, तो आप शीर्ष पर क्लाउड फायरस्टार बीटा पर क्लिक करके रियलटाइम डेटाबेस नियमों में बदल सकते हैं, और फिर सूची से रियलटाइम डेटाबेस का चयन कर सकते हैं।

आप इस लिंक पर क्लिक करके सीधे रियलटाइम डेटाबेस के सुरक्षा नियमों पर भी जा सकते हैं।

रियलटाइम डेटाबेस के लिए सुरक्षा नियम जो आपके पास हैं उससे मेल खाते हैं:

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

यह किसी भी प्रमाणित उपयोगकर्ता को पूरे डेटाबेस तक पूर्ण पढ़ने और लिखने के लिए अनुदान देगा। इस तरह के नियमों के लिए सिक्योरिटी / रिस्क ट्रेड-ऑफ पर अधिक इस सवाल पर मेरा जवाब पढ़ें: फायरबेस ईमेल में कहा गया है कि मेरे रियलटाइम डेटाबेस में असुरक्षित नियम हैं

मेरे पास Firebase का उपयोग करने वाला एक चैट ऐप है जो एक है

setValue x पर विफल: डेटाबेसआधार: अनुमति अस्वीकृत

त्रुटि हर बार जब मैं एक संदेश टाइप करता हूं।

मैंने अपने डेटाबेस को पहले से ही सार्वजनिक होने के लिए निर्धारित किया है:

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

क्या यह मेरे चैट संदर्भ के भीतर से कुछ है?

private void displayChat() {

    ListView listOfMessage = findViewById(R.id.list_of_message);

    Query query = FirebaseDatabase.getInstance().getReference();
    FirebaseListOptions<Chat> options = new FirebaseListOptions.Builder<Chat>()
            .setLayout(R.layout.list_item)
            .setQuery(query, Chat.class)
            .build();

    adapter = new FirebaseListAdapter<Chat>(options) {
        @Override
        protected void populateView(View v, Chat model, int position) {
            //Get reference to the views of list_item.xml
            TextView messageText, messageUser, messageTime;
            messageText = v.findViewById(R.id.message_text);
            messageUser = v.findViewById(R.id.message_user);
            messageTime = v.findViewById(R.id.message_time);

            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)", model.getMessageTime()));
        }
    };
    listOfMessage.setAdapter(adapter);
}

इसे बदलो

request.auth.uid != null

सेवा मेरे

request.auth.uid == null

या उपयोगकर्ता द्वारा परिभाषित वार्तालाप को शुरू करने से पहले एक उचित नियम तंत्र परिभाषित किया गया है







firebase-security-rules