2017-01-04 4 views
0

Ich habe einen Authentifizierungsprozess mit Firebase implementiert. Mein Benutzer sollte jetzt in der Lage sein, Daten hinzuzufügen und in einer benutzerspezifischen Skalierung anzeigen zu lassen (jeder Benutzer hat seine eigenen Daten).Firebase-Datenbank benutzerspezifisch machen

Von dem, was ich gelesen habe, das ist, wie ich Daten in die Datenbank hinzufügen:

private void setData() { 
    // Write a message to the database 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 

    myRef.setValue("Hello World !"); 
} 

Aber in der Konsole scheinen die Daten von allen Benutzern zugänglich zu sein, die Datenbank Firebase ist, was soll ich verwenden, um benutzerspezifische Daten zu speichern? Wenn ja, wie kann dies erreicht werden?

Entschuldigung, wenn meine Frage offensichtlich ist, aber ich bin ziemlich neu zu diesen Prinzipien.

Antwort

2

Erstellen Sie eine eindeutige ID für jeden Benutzer und hosten Sie die Daten für jeden Benutzer unter dieser eindeutigen ID. Die eindeutige ID kann mit der von Ihnen gewünschten Methode erstellt werden, z. B. mit der UDID des Geräts oder durch einfaches Abrufen der Firebase-UID des authentifizierten Benutzers. Zum Beispiel könnte Folgendes funktionieren, wenn Sie ohne Firebase auf eine UID zugreifen möchten.

private void setData() { 
    String uniqueId = java.util.UUID; 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 
    myRef.child(uniqueId).setValue("Hello World !"); 
} 

jedoch unter Verwendung der uid durch Firebase Authentifizierung erzeugt wird empfohlen. Wo das erste Beispiel ausfällt, ist, wenn sich derselbe Benutzer an zwei verschiedenen Geräten anmeldet, die dasselbe Konto verwenden, was verhindern würde, dass sie auf ihre eigenen Daten vom ursprünglichen Gerät zugreifen, da jedes Gerät andere UUIDs haben würde. Auf der anderen Seite wäre die Firebase-UID auf jedem Gerät gleich, und somit hätte derselbe Benutzer auf beiden Geräten Zugriff auf die gleichen Daten. Wenn Sie die Feuerbasis uid zugreifen möchten (empfohlen):

private void setData() { 
    FirebaseUser user = firebaseAuth.getCurrentUser(); 
    String uniqueId = user.getUid() 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 
    myRef.child(uniqueId).setValue("Hello World !"); 
} 
+1

Statt eine UUID zu erzeugen, würde ich mit einem anonymen Authentifizierung empfehlen. Es tut im Wesentlichen die gleichen Dinge, aber Sie können dieses anonyme Konto später auf ein normales Benutzerkonto aktualisieren. –

+0

Das könnte auch funktionieren, ich schrieb auch die Antwort in Swift und werde das auf Java aktualisieren, aber das Konzept ist das gleiche. Wenn Sie eine Form der Firebase-Authentifizierung verwenden, wird eine UID generiert und über die API zugänglich gemacht. –

+0

Ja, tut mir leid wegen der unvollständigen Rückmeldung. Dein Ansatz klingt absolut vernünftig, daher hinterlasse ich einen Kommentar anstelle einer alternativen Antwort. :-) –