App mit Firebase verbinden
Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls noch nicht geschehen.
Firebase-Authentifizierung zu Ihrer 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 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-Konsole aktivieren (gehen Sie zum Tab Anmeldemethode unter Sicherheit > Authentifizierung). Sie können die Anmeldung per E-Mail-Adresse/Passwort und viele andere Identitätsanbieter aktivieren, die Sie für Ihre App benötigen.
(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 Authentifizierungsfunktionen prototypisieren und testen können: die Firebase Local Emulator Suite. Wenn Sie sich zwischen Authentifizierungstechniken und ‑anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentication und Firebase-Sicherheitsregeln ausprobieren oder Anmelde-UI-Designs prototypisieren, kann es sinnvoll sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.
Ein Authentifizierungsemulator ist Teil der Local Emulator Suite. Damit kann Ihre App mit emulierten Datenbankinhalten und Konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) interagieren.
Die Verwendung des Authentifizierungsemulators umfasst nur wenige Schritte:
Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
Führen Sie
firebase emulators:startim Stammverzeichnis Ihres lokalen Projektverzeichnisses aus.Verwenden Sie die Local Emulator Suite-Benutzeroberfläche für interaktives Prototyping oder die Authentication Emulator REST API 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 Authentication-Emulator verbinden. Weitere Informationen finden Sie in der Einführung in die 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 ein Stream abonnieren.
Nach dem Aufrufen des Streams wird sofort ein Ereignis mit dem aktuellen Authentifizierungsstatus des Nutzers bereitgestellt. Anschließend werden Ereignisse bereitgestellt, wenn sich der Authentifizierungsstatus ändert.
Es gibt drei Methoden, um auf Änderungen des Authentifizierungsstatus zu reagieren:
authStateChanges()
Rufen Sie die authStateChanges()-Methode für Ihre FirebaseAuth-Instanz auf, um diese Änderungen zu abonnieren:
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 passiert:
- Gleich nach der Registrierung des Listeners.
- Wenn ein Nutzer angemeldet ist.
- Wenn der aktuelle Nutzer abgemeldet ist.
idTokenChanges()
Rufen Sie die Methode idTokenChanges() für Ihre FirebaseAuth-Instanz auf, um diese Änderungen zu abonnieren:
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 passiert:
- Gleich 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()
Rufen Sie die userChanges()-Methode für Ihre FirebaseAuth-Instanz auf, um diese Änderungen zu abonnieren:
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 passiert:
- Gleich 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 Ihrer Nutzer bei Neustarts der App oder Seitenneuladungen beibehalten wird.
Auf nativen Plattformen wie Android und iOS ist dieses Verhalten nicht konfigurierbar. Der Authentifizierungsstatus des Nutzers wird auf dem Gerät zwischen App-Neustarts beibehalten. Der Nutzer kann die im Cache gespeicherten Daten der Apps über die Geräteeinstellungen löschen. Dadurch wird der gesamte gespeicherte Status gelöscht.
Auf Webplattformen wird der Authentifizierungsstatus des Nutzers in IndexedDB gespeichert.
Mit Persistence.LOCAL können Sie die Persistenz ändern, um Daten im lokalen Speicher zu speichern.
Bei Bedarf können Sie dieses Standardverhalten ändern, sodass der Authentifizierungsstatus nur für die aktuelle Sitzung oder gar nicht beibehalten wird. Rufen Sie die folgende Methode FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); auf, um diese Einstellungen zu konfigurieren.
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
In den Anleitungen finden Sie Informationen zum Anmelden und Registrieren von Nutzern mit den unterstützten Identitäts- und Authentifizierungsdiensten.