Łą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 różnymi technikami i dostawcami uwierzytelniania, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą Uwierzytelniania i reguł bezpieczeństwa Firebase lub prototypujesz projekty interfejsu logowania, praca lokalna 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(), aby określić adres i port 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 omówimy, jak uwierzytelniać 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
za pomocą 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 uwierzytelniania 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 tożsamości i uwierzytelniania.