Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase数据库安全规则,使用Android仅访问用户生成的数据_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Firebase数据库安全规则,使用Android仅访问用户生成的数据

Firebase数据库安全规则,使用Android仅访问用户生成的数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想创建聊天支持应用程序模型。我只有一个代理和许多请求查询的用户。每个用户都可以与代理进行多次对话(假设它就像一个whatsapp组,只有两个成员,一个用户和该代理) 因此,我创建了一个数据结构,如: Conversation -uId -status -conversationTitle 至于信息 Message -conversationId -message -from //0 mean it from me to my friend and 1 for a message from m

我想创建聊天支持应用程序模型。我只有一个代理和许多请求查询的用户。每个用户都可以与代理进行多次对话(假设它就像一个whatsapp组,只有两个成员,一个用户和该代理)

因此,我创建了一个数据结构,如:

Conversation
-uId
-status
-conversationTitle
至于信息

Message
-conversationId
-message
-from //0 mean it from me to my friend and 1 for a message from my friend to me
-timestamp
基本结构如下:

Conversation1:{ "uId": "1", "status":0, "conversationTitle": "First conversation"},
Conversation2:{ "uId": "2", "status":0, "conversationTitle": "Second conversation"},
Conversation1:{ "uId": "1", "status":0, "conversationTitle": "Third conversation"}
至于信息:

    Message1: {"conversationId": "Conversation1", "message": "Hello there 1!", "from":0, "timestamp":******** },
    Message2: {"conversationId": "Conversation1", "message": "Hello there 2!", "from":0, "timestamp":******** },
    Message3: {"conversationId": "Conversation2", "message": "Hello there 3!", "from":0, "timestamp":******** },
    Message4: {"conversationId": "Conversation3", "message": "Hello there 4!", "from":0, "timestamp":******** },
如您所见,消息1和2属于会话1,而会话1又属于uID为1的用户1

我希望与用户1(uId:1)和用户2(uId:2)发生的所有对话都不能看到1的对话

我把安全写为:

"conversations":{
  "$uid":{
    ".read": "data.child('uId').val() == auth.uid",
    ".write":"auth != null && newData.child('uId').val() == auth.uid"
  }
}
然后在Android中:

FirebaseDatabase database = FirebaseDatabase.getInstance();
Query conversationsRef = database.getReference("conversations");

FirebaseRecyclerAdapter<Conversation, ConversationHolder> binderData = new FirebaseRecyclerAdapter<Conversation, ConversationHolder>(Conversation.class, R.layout.item_butler_converastions, ConversationHolder.class, conversationsRef) {
                    @Override
                    public void populateViewHolder(ConversationHolder chatMessageViewHolder, Conversation chatMessage, int position) {
                        chatMessageViewHolder.setName(chatMessage.getTitle());
                    }

                    @Override
                    protected void onCancelled(DatabaseError error) {
                        super.onCancelled(error);
                    }
                };
但是没有起作用。提前谢谢

Query conversationsRef = database.getReference("conversations").orderByChild("uId").equalTo(mAuth.getCurrentUser().getUid());