Verbinden Sie Ihre App mit Firebase
Installieren und initialisieren Sie die Firebase SDKs für Flutter , falls Sie dies noch nicht getan haben.
Fügen Sie Ihrer App die Firebase-Authentifizierung hinzu
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plugin zu installieren:
flutter pub add firebase_auth
Wenn Sie fertig sind, erstellen Sie Ihre Flutter-Anwendung neu:
flutter run
Importieren Sie das Plugin in Ihren Dart-Code:
import 'package:firebase_auth/firebase_auth.dart';
Um einen Authentifizierungsanbieter zu verwenden, müssen Sie ihn in der Firebase-Konsole aktivieren . Wechseln Sie zur Seite „Anmeldemethode“ im Abschnitt „Firebase-Authentifizierung“, um die Anmeldung per E-Mail/Kennwort und alle anderen gewünschten Identitätsanbieter für Ihre App zu aktivieren.
(Optional) Erstellen Sie einen Prototyp und testen Sie ihn mit der Firebase Local Emulator Suite
Bevor wir darüber sprechen, wie Ihre App Benutzer authentifiziert, stellen wir eine Reihe von Tools vor, mit denen Sie Prototypen erstellen und Authentifizierungsfunktionen testen können: Firebase Local Emulator Suite. Wenn Sie sich zwischen Authentifizierungstechniken und -anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentifizierungs- und Firebase-Sicherheitsregeln ausprobieren oder Prototypen von Anmelde-UI-Designs erstellen, kann es eine gute Idee sein, lokal arbeiten zu können, ohne Live-Dienste bereitzustellen .
Ein Authentifizierungsemulator ist Teil der Local Emulator Suite, die es Ihrer App ermöglicht, mit emulierten Datenbankinhalten und -konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) zu interagieren.
Die Verwendung des Authentifizierungsemulators umfasst nur wenige Schritte:
Hinzufügen einer Codezeile zur Testkonfiguration Ihrer App, um eine Verbindung mit dem Emulator herzustellen.
Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses
firebase emulators:start
aus.Verwenden der Benutzeroberfläche der Local Emulator Suite für interaktives Prototyping oder der REST-API des Authentifizierungsemulators für nicht interaktives Testen.
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 ausführliche Anleitung finden Sie unter Connect your app to the Authentication emulator . Weitere Informationen finden Sie in der Einführung zur Local Emulator Suite .
Fahren wir nun mit der Authentifizierung von Benutzern fort.
Überprüfen Sie den aktuellen Authentifizierungsstatus
Firebase Auth bietet viele Methoden und Dienstprogramme, mit denen Sie eine sichere Authentifizierung in Ihre neue oder vorhandene Flutter-Anwendung integrieren können. In vielen Fällen müssen Sie den Authentifizierungsstatus Ihres Benutzers kennen, z. B. ob er angemeldet oder abgemeldet ist.
Firebase Auth ermöglicht es Ihnen, diesen Status in Echtzeit über einen Stream
zu abonnieren. Nach dem Aufruf stellt der Stream ein sofortiges Ereignis des aktuellen Authentifizierungsstatus des Benutzers bereit und stellt dann nachfolgende Ereignisse bereit, wenn sich der Authentifizierungsstatus ändert.
Es gibt drei Methoden zum Überwachen von Änderungen des Authentifizierungsstatus:
authStateChanges()
Um diese Änderungen zu abonnieren, 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 eintritt:
- Unmittelbar nachdem der Hörer registriert wurde.
- Wenn ein Benutzer angemeldet ist.
- Wenn der aktuelle Benutzer abgemeldet wird.
idTokenChanges()
Um diese Änderungen zu abonnieren, rufen Sie die Methode idTokenChanges()
auf 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 eintritt:
- Unmittelbar nachdem der Hörer registriert wurde.
- Wenn ein Benutzer angemeldet ist.
- Wenn der aktuelle Benutzer abgemeldet wird.
- Wenn sich das Token des aktuellen Benutzers ändert.
- Ein Benutzer meldet sich an oder authentifiziert sich erneut, nachdem die benutzerdefinierten Ansprüche geändert wurden. Der als Ergebnis ausgestellte ID-Token enthält die neuesten Ansprüche.
- Das ID-Token einer bestehenden Benutzersitzung wird aktualisiert, nachdem ein älteres Token abgelaufen ist.
- Ein ID-Token wird zwangsweise aktualisiert, indem
FirebaseAuth.instance.currentUser.getIdTokenResult(true)
wird.
Weitere Einzelheiten finden Sie unter Propagieren benutzerdefinierter Ansprüche an den Client
userChanges()
Um diese Änderungen zu abonnieren, 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 eintritt:
- Unmittelbar nachdem der Hörer registriert wurde.
- Wenn ein Benutzer angemeldet ist.
- Wenn der aktuelle Benutzer abgemeldet wird.
- Wenn sich das Token des aktuellen Benutzers ändert.
- Wenn die folgenden von
FirebaseAuth.instance.currentUser
bereitgestellten Methoden aufgerufen werden:-
reload()
-
unlink()
-
updateEmail()
-
updatePassword()
-
updatePhoneNumber()
-
updateProfile()
-
idTokenChanges()
, userChanges()
& authStateChanges()
werden auch nicht ausgelöst, wenn Sie den User
mit dem Firebase Admin SDK oder der Firebase-Konsole deaktivieren oder löschen. Sie müssen ein Neuladen mit FirebaseAuth.instance.currentUser.reload()
erzwingen, was zu einer user-disabled
oder user-not-found
Ausnahme führt, die Sie in Ihrem App-Code abfangen und behandeln können.
Beständiger Authentifizierungsstatus
Die Firebase SDKs für alle Plattformen bieten sofort einsatzbereite Unterstützung, um sicherzustellen, dass der Authentifizierungsstatus Ihres Benutzers über App-Neustarts oder Seitenaktualisierungen hinweg beibehalten wird.
Auf nativen Plattformen wie Android und iOS ist dieses Verhalten nicht konfigurierbar und der Authentifizierungsstatus des Benutzers wird zwischen App-Neustarts auf dem Gerät beibehalten. Der Benutzer kann die zwischengespeicherten Daten der Apps mithilfe der Geräteeinstellungen löschen, wodurch alle vorhandenen gespeicherten Zustände gelöscht werden.
Auf Webplattformen wird der Authentifizierungsstatus des Benutzers in IndexedDB gespeichert. Sie können die Persistenz zum Speichern von Daten im lokalen Speicher mit Persistence.LOCAL
ändern. Bei Bedarf können Sie dieses Standardverhalten so ändern, dass der Authentifizierungsstatus nur für die aktuelle Sitzung beibehalten wird oder überhaupt nicht. Um diese Einstellungen zu konfigurieren, rufen Sie die folgende Methode FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);
. Sie können die Persistenz für jede Auth-Instanz weiterhin mit 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);
Nächste Schritte
Erkunden Sie die Leitfäden zum Anmelden und Registrieren von Benutzern bei den unterstützten Identitäts- und Authentifizierungsdiensten.