Łączenie aplikacji z Firebase
Zainstaluj i zainicjuj pakiety SDK Firebase dla Fluttera, jeśli jeszcze tego nie zrobisz.
Dodawanie Uwierzytelniania Firebase do aplikacji
W głównym katalogu projektu Fluttera uruchom to polecenie, aby zainstalować wtyczkę:
flutter pub add firebase_authPo zakończeniu ponownie skompiluj aplikację Fluttera:
flutter runZaimportuj wtyczkę w kodzie Dart:
import 'package:firebase_auth/firebase_auth.dart';
Aby korzystać z dostawcy uwierzytelniania, musisz go włączyć w konsoli Firebase (otwórz kartę Bezpieczeństwo > Uwierzytelnianie > Metoda logowania). Możesz włączyć logowanie za pomocą e-maila i hasła oraz wielu innych dostawców tożsamości, których chcesz używać w aplikacji.
(Opcjonalnie) Prototypowanie i testowanie za pomocą Pakietu emulatorów lokalnych Firebase
Zanim omówimy, jak aplikacja uwierzytelnia użytkowników, przedstawimy zestaw narzędzi, których możesz używać do prototypowania i testowania funkcji uwierzytelniania: Pakiet emulatorów lokalnych Firebase. Jeśli zastanawiasz się nad wyborem technik i dostawców uwierzytelniania, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą Uwierzytelniania i reguł bezpieczeństwa Firebase lub prototypujesz projekty interfejsu logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być świetnym rozwiązaniem.
Emulator uwierzytelniania jest częścią Pakietu emulatorów lokalnych, który umożliwia aplikacji interakcję z emulowaną zawartością bazy danych i konfiguracją, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami bezpieczeństwa).
Korzystanie z emulatora uwierzytelniania obejmuje tylko kilka kroków:
Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
Uruchomienie polecenia
firebase emulators:startw głównym katalogu projektu lokalnego.Używanie interfejsu Pakietu emulatorów lokalnych do interaktywnego prototypowania lub interfejsu REST API emulatora uwierzytelniania do testowania nieinteraktywnego.
Wywołanie funkcji
useAuthEmulator()w celu określenia adresu i portu emulatora:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem uwierzytelniania. Więcej informacji znajdziesz we wprowadzeniu do Pakietu emulatorów lokalnych.
Teraz przejdźmy do uwierzytelniania użytkowników.
Sprawdzanie bieżącego stanu uwierzytelniania
Uwierzytelnianie Firebase udostępnia wiele metod i narzędzi, które umożliwiają zintegrowanie bezpiecznego uwierzytelniania z nową lub istniejącą aplikacją Fluttera. W wielu przypadkach musisz znać stan uwierzytelniania użytkownika, np. czy jest zalogowany czy wylogowany.
Uwierzytelnianie Firebase umożliwia subskrybowanie tego stanu w czasie rzeczywistym za pomocą
Stream.
Po wywołaniu strumień natychmiast udostępnia zdarzenie z bieżącym stanem uwierzytelniania użytkownika, a następnie udostępnia kolejne zdarzenia, gdy stan uwierzytelniania się zmieni.
Istnieją 3 metody nasłuchiwania zmian stanu uwierzytelniania:
authStateChanges()
Aby zasubskrybować te zmiany, wywołaj metodę authStateChanges() w instancji FirebaseAuth:
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Zdarzenia są wywoływane, gdy:
- bezpośrednio po zarejestrowaniu odbiornika;
- użytkownik się zaloguje;
- bieżący użytkownik się wyloguje.
idTokenChanges()
Aby zasubskrybować te zmiany, wywołaj metodę idTokenChanges() w instancji FirebaseAuth:
FirebaseAuth.instance
.idTokenChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Zdarzenia są wywoływane, gdy:
- bezpośrednio po zarejestrowaniu odbiornika;
- użytkownik się zaloguje;
- bieżący użytkownik się wyloguje;
- zmieni się token bieżącego użytkownika.
userChanges()
Aby zasubskrybować te zmiany, wywołaj metodę userChanges() w instancji FirebaseAuth:
FirebaseAuth.instance
.userChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Zdarzenia są wywoływane, gdy:
- bezpośrednio po zarejestrowaniu odbiornika;
- użytkownik się zaloguje;
- bieżący użytkownik się wyloguje;
- zmieni się token bieżącego użytkownika;
- zostaną wywołane te metody udostępniane przez
FirebaseAuth.instance.currentUser:reload()unlink()updateEmail()updatePassword()updatePhoneNumber()updateProfile()
Utrzymywanie stanu uwierzytelniania
Pakiety SDK Firebase na wszystkie platformy zapewniają gotową obsługę utrzymywania stanu uwierzytelniania użytkownika po ponownym uruchomieniu aplikacji lub ponownym załadowaniu strony.
Na platformach natywnych, takich jak Android i iOS, to zachowanie nie jest konfigurowalne, a stan uwierzytelniania użytkownika będzie utrzymywany na urządzeniu między ponownymi uruchomieniami aplikacji. Użytkownik może wyczyścić dane aplikacji w pamięci podręcznej za pomocą ustawień urządzenia, co spowoduje usunięcie wszystkich przechowywanych stanów.
Na platformach internetowych stan uwierzytelniania użytkownika jest przechowywany w
IndexedDB.
Możesz zmienić trwałość, aby przechowywać dane w pamięci lokalnej
używając Persistence.LOCAL.
W razie potrzeby możesz zmienić to domyślne zachowanie, aby utrzymywać stan uwierzytelniania tylko w bieżącej sesji lub wcale. Aby skonfigurować te ustawienia, wywołaj tę metodę: FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);.
Możesz nadal aktualizować trwałość każdej instancji Auth za pomocą setPersistence(Persistence.NONE).
// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);
Następne kroki
Zapoznaj się z przewodnikami dotyczącymi logowania i rejestrowania użytkowników za pomocą obsługiwanych usług uwierzytelniania i tożsamości.