firebase
So verwenden Sie die Firebase-Datenbank, um eine Liste der Firebase-Authentifizierungsbenutzer zu führen
Suche…
So speichern Sie Benutzerprofildaten
Jeder authentifizierte Benutzer verfügt über eine Firebase- uid
, die für alle Anbieter eindeutig ist und im Ergebnis jeder Authentifizierungsmethode zurückgegeben wird.
Eine gute Möglichkeit, die Daten Ihres Benutzers zu speichern, ist das Erstellen eines Knotens, um alle Daten des Benutzers zu speichern und mithilfe Ihrer Sicherheitsregeln zu schützen
- Datenbank
{
"users": {
"uid1" : {
"name": "Steve",
"surname": "Jobs"
},
"uid2" : {
"name": "Bill",
"surname": "Gates"
}
}
}
- Sicherheit
{
"rules": {
"users": {
"$uid": {
// If node's key matches the id of the auth user
".write": "$uid == auth.uid"
}
}
}
}
Die $uid
in den obigen Regeln ist eine sogenannte "Dollar-Variable", die sicherstellt, dass die Regeln unter allen Knoten auf alle untergeordneten Knoten von users
angewendet users
. Weitere Informationen finden Sie in der Dokumentation zur Verwendung von $ -Variablen zum Erfassen von Pfadsegmenten .
Warum Benutzerdaten in der Datenbank speichern?
Mit der Firebase-Authentifizierung können sich Benutzer Ihrer App bei sozialen Anbietern oder deren E-Mail-Adresse + Kennwort anmelden. Was aber, wenn Sie zusätzliche Informationen über einen Benutzer speichern möchten, die über die Firebase-Authentifizierung hinausgehen können?
Oder was ist, wenn Sie eine Liste der Benutzer in Ihrer App anzeigen möchten? Die Firebase-Authentifizierung hat dafür keine API.
Die meisten Entwickler lösen dieses Problem, indem sie die zusätzlichen Informationen in einer separaten Datenbank speichern. In diesem Thema wird beschrieben, wie Sie solche Informationen in der Firebase-Echtzeitdatenbank speichern.
Umgang mit Benutzerkontendaten in der Echtzeitdatenbank
Das Firebase-Authentifizierungssystem ist die Quelle für die Benutzer- uid
, displayName
, photoURL
und möglicherweise email
. Kennwortbasierte Konten legen diese persistenten Werte im .updateProfile
über die Methode .updateProfile
. Das Speichern dieser Werte in der Echtzeitdatenbank (rDB, users
wirft das Problem veralteter Daten auf. Anzeigenamen können sich beispielsweise ändern. Um diese Werte synchron zu halten, verwenden Sie den lokalen Speicher gemeinsam mit .onAuthStateChange
.
auf jeder .onAuthStateChange
-
getItem('displayName')
undgetItem('photoURL')
- Vergleiche mit
user.displayName
unduser.photoURL
- wenn anders
-
setItem('displayName')
undsetItem('photoURL')
-
db.ref.child('users').update
die Werte von "displayName
und / oder "photoURL
-
.onAuthStateChange
wird bei jedem Laden oder Neuladen einer Seite sowie bei jeder Änderung des Auth-Status .onAuthStateChange
. Es wird möglicherweise häufig ausgelöst, z. B. mehrseitige Apps. Das Lesen und Schreiben in den lokalen Speicher ist jedoch synchron und sehr schnell, sodass die App-Leistung nicht spürbar beeinträchtigt wird.