Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Database Permission denied with read/write permissions set to true

I'm having trouble writing to my Firebase database in my simple Android app. I've set my database rules to be public:

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

Created a simple class 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;
    }
}

And set a button to perform the onClick method writeNewMessage with these being the significant lines of code:

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);
    }

When running, I receive the error:

W/RepoOperation: setValue at /users/1 failed: DatabaseError: Permission denied

I know this question seems simple and likely to have been repeated, but I have yet to find any that asks this problem without having their error be involved in authentication or some other component. The simplicity of the problem is what confuses me the most.

EDIT: I've also found this error as well:

Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
like image 823
Ben Avatar asked May 24 '16 21:05

Ben


4 Answers

I've been changing firestore rules instead of DB... Hope it helps to someone dumb like me.

enter image description here

like image 135
Zogrof Avatar answered Oct 01 '22 03:10

Zogrof


Complete Solution:

1). Firstly go to Authentication Tab and select SIGN-IN-METHOD turn Anonymous On

2). Secondly go to Database Tab and write Rule

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

3). Thirdly go to Storage Tab and write following rule

service firebase.storage {
 match /b/myapplicationname-f2266.appspot.com/o {
 match /{allPaths=**} {
 allow read, write;
}}}

Note This solution is only for testing purpose with following steps you are giving public permission for Read and Write your database.

like image 41
Nicks Avatar answered Oct 01 '22 02:10

Nicks


This looks like problem with your google-services.json.

Make sure app name and client id are same as in firebase console.

If you are not sure re-download google-services.json from your project's console and add it your project.

like image 32
devprashant Avatar answered Oct 01 '22 01:10

devprashant


I'm not entirely sure what the problem was, but I just deleted my project from Firebase and recreated it, deleting and installing the new google-services.json and it worked perfectly the second time.

Luckily this is a test app and my database was empty, but if you're in this situation and have valuable information stored in your account, I would recommend exporting it before trying this solution.

like image 40
Ben Avatar answered Oct 01 '22 02:10

Ben