0

verweigert Ich möchte diese Regeln aus der security quickstart guideRealtime-Datenbank-Authentifizierung: fehlgeschlagen: Database: Permission

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

verwenden, obwohl ich nicht verstehen, wo die auth.uid aus gelesen wird?

Ich kann es erhalten, um Informationen zu speichern, wenn ich das unten tun, damit ich das Problem bestätigen kann, ist mit auth.id. Ich bin mir nicht sicher, ob ich das als Parameter oder etwas weitergeben muss? Ich fürchte, hier bin ich verloren.

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": true, 
     ".write": true 
     } 
    } 
    } 
} 

Dies ist der aktuelle Java-Code, den ich es mit testen, bin mit:

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference(); 
User u = new User("Jack", "[email protected]", "12345678"); // Very simple class holding this user information 
myRef.child("users").child(mFirebaseUser.getUid()).setValue(u); 

Ich habe mich an Informationen über firebases Echtzeit-Datenbank, aber jedes Mal, sie bekommen die Authentifizierung sie nur Sagen Sie "Momentan werden wir die Authentifizierung deaktivieren, aber stellen Sie sicher, dass Sie sie in der Produktion verwenden!".

+0

Weitere Informationen zu den 'auth'-Variablen in Ihren Sicherheitsregeln finden Sie unter https://firebase.google.com/docs/database/security/user-security#section-variable. Es wird automatisch ausgefüllt, sobald sich ein Benutzer anmeldet und eine "uid" -Eigenschaft enthält, die die eindeutige ID für den angemeldeten Benutzer darstellt. –

+0

Der Code, den Sie freigegeben haben, authentifiziert den Benutzer nicht, daher schlägt diese Regel fehl: $ uid === auth.uid'. Informationen zum Anmelden von Nutzern finden Sie unter https://firebase.google.com/docs/auth/ –

+0

. Ja, ich habe eine LoginActivity, die die Absicht der Aktivität authentifiziert. Ich glaube das Problem kann sein, dass ich den Benutzer in einer anderen Aktivität authentifiziere und es irgendwie seinen "authentifizierten" Zustand verliert – jackdh

Antwort

0

Ich bin ein blutiger Idiot,

Ich war FirebaseAuth.getInstance().signOut(); ein paar Zeilen über meinen Code aufrufen, die ich ursprünglich für Debugging-Zwecke einsetzen.

0

Nun, Sie müssen nicht als Parameter übergeben, Firebase tun es für Sie. Lassen Sie mich versuchen zu erklären, nachdem Sie einen Benutzer in Ihrer Konsole erstellen und sich in Ihrer Anwendung anmelden, wird Firebase jedem Benutzer eine andere uid (ähnlich dieser ca07912b-7e65-41ad-8342-e87cf6f6ceb2).

So, nachdem Sie sich einloggen wird es in Ihrem Smartphone und jeder Anfrage gespeichert werden, die Sie in der Datenbank Firebase tun, um Ihre Sicherheitsregeln analysieren, so dass, wenn Sie sagen, dass nur der Inhaber der uid X/users/**X**/.. zugreifen können dann Wenn Sie nicht eingeloggt sind, haben Sie keine Leseberechtigung und können auch nicht auf diesen Pfad schreiben.