firebase
De Firebase-database gebruiken om een lijst met Firebase-authenticatiegebruikers bij te houden
Zoeken…
Hoe gebruikersprofielgegevens op te slaan
Elke geverifieerde gebruiker heeft een Firebase- uid
die uniek is voor alle providers en wordt geretourneerd in het resultaat van elke authenticatiemethode.
Een goede manier om de gegevens van uw gebruiker op te slaan, is om een knooppunt te maken om alle gegevens van de gebruikers te bewaren en te beschermen met behulp van uw beveiligingsregels
- Gegevensbestand
{
"users": {
"uid1" : {
"name": "Steve",
"surname": "Jobs"
},
"uid2" : {
"name": "Bill",
"surname": "Gates"
}
}
}
- Veiligheid
{
"rules": {
"users": {
"$uid": {
// If node's key matches the id of the auth user
".write": "$uid == auth.uid"
}
}
}
}
De $uid
in de bovenstaande regels is een zogenaamde "dollarvariabele", die ervoor zorgt dat de regels eronder worden toegepast op alle onderliggende knooppunten van users
. Zie de documentatie over $ Variabelen gebruiken om padsegmenten vast te leggen voor meer informatie.
Waarom gebruikersgegevens opslaan in de database
Met Firebase-verificatie kunnen de gebruikers van uw app zich aanmelden bij sociale providers of hun e-mailadres + wachtwoord. Maar wat als u aanvullende informatie over een gebruiker wilt opslaan, naast wat u met Firebase-verificatie kunt opgeven?
Of wat als u een lijst met gebruikers in uw app wilt weergeven? Firebase-authenticatie heeft hiervoor geen API.
De meeste ontwikkelaars lossen dit probleem op door de aanvullende informatie in een aparte database op te slaan. In dit onderwerp wordt beschreven hoe u dergelijke informatie opslaat in de Firebase Realtime-database .
Omgaan met gebruikersaccountgegevens in de Realtime-database
Het Firebase auth-systeem is de bron van een gebruikers uid
, displayName
, photoURL
, en misschien email
. Op wachtwoord gebaseerde accounts stellen deze persistente waarden in het verificatiesysteem in via de .updateProfile
methode. Door deze waarden op te slaan in de Realtime Database, rDB, vormt het users
het probleem van verouderde gegevens. Weergavenamen kunnen bijvoorbeeld veranderen. Om deze waarden synchroon te houden, gebruikt u lokale opslag in samenwerking met .onAuthStateChange
.
op elke .onAuthStateChange
-
getItem('displayName')
engetItem('photoURL')
- vergelijk met
user.displayName
enuser.photoURL
- indien verschillend
-
setItem('displayName')
ensetItem('photoURL')
-
db.ref.child('users').update
de waarden vandisplayName
en / ofphotoURL
-
.onAuthStateChange
bij elke pagina die wordt geladen of opnieuw wordt geladen, evenals bij elke wijziging van de verificatiestatus. Mogelijk wordt er vaak geschoten, bijvoorbeeld apps met meerdere pagina's. Lezen en schrijven naar lokale opslag is echter synchroon en erg snel, dus er is geen merkbare invloed op de prestaties van de app.