Firebase数据库权限被拒绝,读/写权限设置为true

Ben*_*Ben 26 android firebase firebase-realtime-database

我在简单的Android应用程序中写入Firebase数据库时遇到问题.我已将数据库规则设置为公开:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Run Code Online (Sandbox Code Playgroud)

创建了一个简单的类Message:

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class Message {
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference dbRef = database.getReference();
    public String sender;
    public String message;

    public Message(){}

    public Message(String sender, String message) {
        this.sender = sender;
        this.message = message;
    }
}
Run Code Online (Sandbox Code Playgroud)

并设置一个按钮来执行onClick方法writeNewMessage,这些方法是重要的代码行:

int counter = 0;

public void writeNewMessage(View view) {

        counter += 1;
        Message messageToWrite = new Message("John", "Simple message: " + counter);
        String messageId = String.valueOf(counter);

        dbRef.child("users").child(messageId).setValue(messageToWrite);
    }
Run Code Online (Sandbox Code Playgroud)

运行时,我收到错误:

W/RepoOperation: setValue at /users/1 failed: DatabaseError: Permission denied
Run Code Online (Sandbox Code Playgroud)

我知道这个问题似乎很简单,可能会重复,但我还没有找到任何问题,而不会将其错误包含在身份验证或其他组件中.这个问题的简单性让我感到困惑.

编辑:我也发现了这个错误:

Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
Run Code Online (Sandbox Code Playgroud)

sum*_*hra 29

完整的解决方案1).首先转到Authentication选项卡,然后选择SIGN-IN-METHOD转为Anonymous On 2).其次,转到数据库选项卡并编写规则__CODE__ 3).第三步,转到存储选项卡并编写以下规则

{
"rules": {
".read": true,
".write": true
}}
Run Code Online (Sandbox Code Playgroud)

注意此解决方案仅用于测试目的,您可以通过以下步骤为读取和写入数据库授予公共权限.


Zog*_*rof 27

我一直在更改Firestore规则而不是DB ...希望它对像我这样愚蠢的人有所帮助。

在此处输入图片说明

  • 没有要包含的代码。不是叫OP傻瓜,而是跟我一样犯同样错误的人。我相信他们可以克服被称为愚蠢的事情。 (5认同)
  • 这是我的问题。谢谢。 (4认同)
  • 搞笑的错误:/ (2认同)

dev*_*ant 22

这看起来像你的google-services.json问题.

确保应用程序名称和客户端ID与firebase控制台中的相同.

如果您不确定从项目控制台重新下载google-services.json并将其添加到您的项目中.