0

Ich habe nach einer Möglichkeit gesucht, die Authentifizierung mit Firebases neuem Cloud Firestore zu verwenden. Ich weiß, dass es möglich ist, aber es gibt keinen guten Leitfaden sowohl in der Dokumentation als auch an anderen Orten.Cloud Firestore mit Authentifizierung

Könnte jemand bitte erläutern, wie eine Authentifizierungs-UID bereitgestellt wird, wenn get() Daten von Cloud Firestore übertragen werden?

Hier sind meine Sicherheitsregeln:

service cloud.firestore { 
    match /users/{userID} { 
    allow read, write: if request.auth.uid == userID; 
    } 
} 

Und hier ist mein aktueller Code:

var db = firebase.firestore(); 
var docRef = db.collection("users").doc(uid); //lets say "uid" var is already defined 
docRef.get().then(function(doc) { 
    if (doc.exists) { 
     console.log("Document data:", doc.data()); 
    } else { 
     console.log("No such document!"); 
    } 
}).catch(function(error) { 
    console.log("Error getting document:", error); 
}); 

Die Struktur der Datenbank ist nur eine „Benutzer“ Sammlung an der Wurzel, dann ein Dokument für jeden Benutzer (benannt nach der UID). Ich möchte das Dokument mit der UID des Benutzers erhalten.

Natürlich gibt dies den Fehler "fehlende oder unzureichende Berechtigungen", die aufgrund der Sicherheitsregeln erwartet wird.

Diese Frage mag einfach erscheinen, aber wenn jemand eine gute Dokumentation dazu finden kann, wäre das großartig!

+0

Haben Sie alle Benutzer erhalten möchten oder nur bei Ihnen. – Hareesh

+1

Bitte geben Sie einen [MCVE] (http://stackoverflow.com/help/mcve) (lesen Sie den Link, es ist sehr nützlich). Z.B. Worauf deutet 'docRef' hin? Unterschreiben Sie den Benutzer? –

+0

@FrankvanPuffelen Okay, ich habe die Frage bearbeitet, um fehlende Informationen auszufüllen. Ja, ich habe bereits eine Authentifizierung mit Google durchgeführt. Ich habe die UID, ich muss nur wissen, was damit zu tun ist – yummypasta

Antwort

4

sollte Ihre Regel sein innen match /databases/{database}/documents

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /users/{userID} { 
     allow read, write: if request.auth.uid == userID; 
    } 
    } 
} 
Verwandte Themen