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.displayName
iuser.photoURL
- jeśli inny
-
setItem('displayName')
isetItem('photoURL')
-
db.ref.child('users').update
wartościdisplayName
i / 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.