App mit Firebase verbinden
Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls noch nicht geschehen.
Firebase Authentication zur App hinzufügen
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plug-in zu installieren:
flutter pub add firebase_authErstellen Sie nach Abschluss der Installation Ihre Flutter-Anwendung neu:
flutter runImportieren Sie das Plug-in in Ihren Dart-Code:
import 'package:firebase_auth/firebase_auth.dart';
Wenn Sie einen Authentifizierungsanbieter verwenden möchten, müssen Sie ihn in der Firebase Console aktivieren. Rufen Sie im Bereich „Firebase Authentication“ die Seite „Anmeldemethode“ auf, um die Anmeldung per E‑Mail/Passwort und alle anderen Identitätsanbieter zu aktivieren, die Sie für Ihre App verwenden möchten.
(Optional) Prototypen erstellen und testen mit der Firebase Local Emulator Suite
Bevor wir uns ansehen, wie Ihre App Nutzer authentifiziert, stellen wir Ihnen eine Reihe von Tools vor, mit denen Sie Prototypen erstellen und die Authentifizierungsfunktionen testen können: die Firebase Local Emulator Suite. Wenn Sie sich zwischen verschiedenen Authentifizierungstechniken und ‑anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentication und Firebase-Sicherheitsregeln testen oder Prototypen für die UI-Designs für die Anmeldung erstellen möchten, kann es eine gute Idee sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.
Ein Authentifizierungs-Emulator ist Teil der Local Emulator Suite. Damit kann Ihre App mit emulierten Datenbankinhalten und ‑konfigurationen sowie optional mit den emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) interagieren.
Die Verwendung des Authentifizierungs-Emulators umfasst nur wenige Schritte:
Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
Führen Sie im Stammverzeichnis Ihres lokalen Projekts
firebase emulators:startaus.Verwenden Sie die Local Emulator Suite-UI für interaktive Prototypen oder die REST API des Authentifizierungs-Emulators für nicht interaktive Tests.
Rufen Sie
useAuthEmulator()auf, um die Emulatoradresse und den Port anzugeben:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
Eine detaillierte Anleitung finden Sie unter App mit dem Authentifizierungs-Emulator verbinden. Weitere Informationen finden Sie in der Einführung zur Local Emulator Suite.
Sehen wir uns nun an, wie Sie Nutzer authentifizieren.
Aktuellen Authentifizierungsstatus prüfen
Firebase Auth bietet viele Methoden und Dienstprogramme, mit denen Sie eine sichere Authentifizierung in Ihre neue oder vorhandene Flutter-Anwendung einbinden können. In vielen Fällen müssen Sie den Authentifizierungsstatus Ihres Nutzers kennen, z. B. ob er angemeldet oder abgemeldet ist.
Mit Firebase Auth können Sie diesen Status in Echtzeit über einen
Stream abonnieren.
Nach dem Aufruf liefert der Stream ein sofortiges Ereignis des aktuellen Authentifizierungsstatus des Nutzers und dann weitere Ereignisse, wenn sich der Authentifizierungsstatus ändert.
Es gibt drei Methoden, um auf Änderungen des Authentifizierungsstatus zu warten:
authStateChanges()
Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode authStateChanges() in Ihrer FirebaseAuth-Instanz auf:
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Ereignisse werden ausgelöst, wenn Folgendes geschieht:
- Unmittelbar nach der Registrierung des Listeners.
- Wenn ein Nutzer angemeldet ist.
- Wenn der aktuelle Nutzer abgemeldet ist.
idTokenChanges()
Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode idTokenChanges() in Ihrer FirebaseAuth-Instanz auf:
FirebaseAuth.instance
.idTokenChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Ereignisse werden ausgelöst, wenn Folgendes geschieht:
- Unmittelbar nach der Registrierung des Listeners.
- Wenn ein Nutzer angemeldet ist.
- Wenn der aktuelle Nutzer abgemeldet ist.
- Wenn sich das Token des aktuellen Nutzers ändert.
userChanges()
Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode userChanges() in Ihrer FirebaseAuth-Instanz auf:
FirebaseAuth.instance
.userChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Ereignisse werden ausgelöst, wenn Folgendes geschieht:
- Unmittelbar nach der Registrierung des Listeners.
- Wenn ein Nutzer angemeldet ist.
- Wenn der aktuelle Nutzer abgemeldet ist.
- Wenn sich das Token des aktuellen Nutzers ändert.
- Wenn die folgenden Methoden von
FirebaseAuth.instance.currentUseraufgerufen werden:reload()unlink()updateEmail()updatePassword()updatePhoneNumber()updateProfile()
Authentifizierungsstatus beibehalten
Die Firebase SDKs für alle Plattformen bieten sofort einsatzbereite Unterstützung, um sicherzustellen, dass der Authentifizierungsstatus Ihres Nutzers bei App-Neustarts oder Seiten-Reloads beibehalten wird.
Auf nativen Plattformen wie Android und iOS ist dieses Verhalten nicht konfigurierbar. Der Authentifizierungsstatus des Nutzers wird zwischen App-Neustarts auf dem Gerät beibehalten. Der Nutzer kann die im Cache gespeicherten App-Daten über die Geräteeinstellungen löschen. Dadurch wird jeder vorhandene gespeicherte Status gelöscht.
Auf Webplattformen wird der Authentifizierungsstatus des Nutzers in
IndexedDB gespeichert.
Sie können die Persistenz ändern, um Daten im lokalen Speicher
mit Persistence.LOCAL zu speichern.
Bei Bedarf können Sie dieses Standardverhalten ändern, sodass der Authentifizierungsstatus nur für die aktuelle Sitzung beibehalten wird oder gar nicht. Rufen Sie die folgende Methode auf, um diese Einstellungen zu konfigurieren: FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);.
Sie können die Persistenz für jede Auth-Instanz weiterhin mit setPersistence(Persistence.NONE) aktualisieren.
// 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);
Nächste Schritte
Sehen Sie sich die Anleitungen zum Anmelden und Registrieren von Nutzern mit den unterstützten Identitäts- und Authentifizierungsdiensten an.