2016-05-24 1 views
5

Ich habe Probleme beim Schreiben in meine Firebase-Datenbank in meiner einfachen Android-App. Ich habe meine Datenbank Regeln öffentlich sein:Firebase-Datenbankberechtigung verweigert mit Lese-/Schreibberechtigungen, die auf "true" gesetzt sind

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

Erstellt eine einfache Klasse 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; 
    } 
} 

und eine Taste legen Sie die OnClick Methode writeNewMessage mit diesen sind die wesentlichen Zeilen Code auszuführen:

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

Beim laufen, erhalte ich die Fehlermeldung:

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

Ich weiß, diese Frage scheint einfach und wahrscheinlich wiederholt worden zu sein, aber ich habe noch keine finden, die dieses Problem stellt, ohne ihren Fehler in der Authentifizierung oder einer anderen Komponente beteiligt sein. Die Einfachheit des Problems verwirrt mich am meisten.

EDIT: Ich habe auch auch diesen Fehler gefunden:

Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" 
+0

Hmmm ... die Regeln sehen gut aus, das hört sich merkwürdig an. Sind Sie sicher, dass Sie die Regeln gespeichert/veröffentlicht haben? –

+0

Ich habe den veröffentlichten Knopf gedrückt und den Simulator erfolgreich versucht, so weit ich weiß, dass er veröffentlicht wurde! –

+0

Sehr merkwürdig.Ein paar Dinge zu überprüfen: Erstens, können Sie Ihre google-services.json überprüfen und sicherstellen, dass das Projekt, das Sie verwenden, das ist, das Sie erwarten. Zweitens, können Sie versuchen, Auth aus dem Projekt zu entfernen (Kommentar die Gradle Abhängigkeit für Firebase-Auth, wenn es dort ist) und sehen, ob das einen Unterschied macht? –

Antwort

14

Dies sieht aus wie ein Problem mit Ihrem Google-Services.json.

Stellen Sie sicher, dass der Name und die Client-ID der App dieselben sind wie in der Firebase-Konsole.

Wenn Sie nicht sicher sind, laden Sie google-services.json erneut von der Projektkonsole herunter und fügen Sie Ihr Projekt hinzu.

+0

Arbeitete wie ein Traum. – Jacob

3

Ich bin nicht ganz sicher, was das Problem war, aber ich gelöscht nur mein Projekt von Firebase und neu erstellt es, zu löschen und Installation der neuen google-services.json und es funktionierte perfekt das zweite Mal.

Zum Glück ist dies eine Test-App und meine Datenbank war leer, aber wenn Sie in dieser Situation sind und wertvolle Informationen in Ihrem Konto gespeichert haben, würde ich empfehlen, es zu exportieren, bevor Sie diese Lösung ausprobieren.

-7

Internet Permission

Internet Erlaubnis zum AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/> 
10

Komplettlösung 1) hinzuzufügen. Gehen Sie zuerst zur Registerkarte Authentifizierung und wählen Sie SIGN-IN-METHODE schalten Sie anonyme On 2). Zweitens gehen Sie zur Registerkarte Datenbank und schreiben Sie Regel { "rules": { ".read": true, ".write": true }} 3). gehen Drittens zu Speicher Tab und schreiben folgende Regel

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

Hinweis Diese Lösung ist nur für Testzwecke mit folgenden Schritten, die Sie geben öffentliche Erlaubnis für Lesen und Schreiben Sie Ihre Datenbank.

+0

gemacht Schritt 1 und 2, es hat funktioniert! – VinceFR

+0

große Antwort! hat perfekt für mich gearbeitet – ziniestro

Verwandte Themen