firebase
Jak korzystać z bazy danych Firebase, aby przechowywać listę użytkowników uwierzytelniania Firebase
Szukaj…
Jak zapisać dane profilu użytkownika
Każdy uwierzytelniony użytkownik ma Firebase uid to unikalna na wszystkich dostawców i jest zwrócony w wyniku każdej metody uwierzytelniania.
Dobrym sposobem na przechowywanie danych użytkownika jest utworzenie węzła, który przechowuje wszystkie dane użytkowników i chroni je przy użyciu reguł bezpieczeństwa
- Baza danych
{
"users": {
"uid1" : {
"name": "Steve",
"surname": "Jobs"
},
"uid2" : {
"name": "Bill",
"surname": "Gates"
}
}
}
- Bezpieczeństwo
{
"rules": {
"users": {
"$uid": {
// If node's key matches the id of the auth user
".write": "$uid == auth.uid"
}
}
}
}
$uid w powyższych regułach jest tak zwaną „zmienną dolara”, która zapewnia, że reguły pod nią stosowane są stosowane do wszystkich potomnych węzłów users . Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą używania zmiennych $ do przechwytywania segmentów ścieżek .
Po co zapisywać dane użytkownika w bazie danych
Uwierzytelnianie Firebase umożliwia użytkownikom Twojej aplikacji logowanie się do dostawców usług społecznościowych lub ich adresu e-mail + hasła. Ale co, jeśli chcesz przechowywać dodatkowe informacje o użytkowniku, poza tym, co pozwala ci określić Firebase Authentication?
A co jeśli chcesz wyświetlić listę użytkowników w swojej aplikacji? Uwierzytelnianie Firebase nie ma do tego interfejsu API.
Większość programistów rozwiązuje ten problem, przechowując dodatkowe informacje w osobnej bazie danych. W tym temacie opisano, jak przechowywać takie informacje w bazie danych Firebase Realtime .
Obsługa danych konta użytkownika w bazie danych w czasie rzeczywistym
System auth Firebase jest źródłem użytkowników uid , displayName , photoURL , a może email . Konta oparte na hasłach ustawiają te trwałe wartości w systemie uwierzytelniania za pomocą metody .updateProfile . Przechowywanie tych wartości w Realtime Database, rDB, węzeł users powoduje problem z nieaktualnymi danymi. Wyświetlane nazwy mogą na przykład ulec zmianie. Aby zsynchronizować te wartości, użyj pamięci lokalnej w połączeniu z .onAuthStateChange .
na każdym .onAuthStateChange
-
getItem('displayName')igetItem('photoURL') - porównaj do
user.displayNameiuser.photoURL - jeśli inny
-
setItem('displayName')isetItem('photoURL') -
db.ref.child('users').updatewartościdisplayNamei / lubphotoURL
-
.onAuthStateChange uruchamia się przy każdym ładowaniu lub ładowaniu strony, a także przy każdej zmianie stanu .onAuthStateChange . Potencjalnie strzela często, np. Aplikacje wielostronicowe. Jednak odczytywanie i zapisywanie w lokalnej pamięci jest synchroniczne i bardzo szybkie, więc nie będzie zauważalnego wpływu na wydajność aplikacji.