Erste Schritte mit Firebase Authentication in Flutter

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

  1. Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plug-in zu installieren:

    flutter pub add firebase_auth
    
  2. Erstellen Sie Ihre Flutter-Anwendung neu:

    flutter run
    
  3. Importieren 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 mit E-Mail-Adresse/Passwort und alle anderen Identitätsanbieter zu aktivieren, die Sie für Ihre App verwenden möchten.

(Optional) Prototypen mit der Firebase Local Emulator Suite erstellen und testen

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 eine gute Idee sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.

Ein Authentication-Emulator 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 Authentifizierungs-Emulators umfasst nur wenige Schritte:

  1. Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.

  2. Führen Sie firebase emulators:start im Stammverzeichnis Ihres lokalen Projektverzeichnisses aus.

  3. Verwenden Sie die Local Emulator Suite-Benutzeroberfläche für interaktives Prototyping oder die Authentication-Emulator-REST API für nicht interaktive Tests.

  4. 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 liefert der Stream sofort ein Ereignis mit dem aktuellen Authentifizierungsstatus des Nutzers und dann weitere Ereignisse, wenn sich der Authentifizierungsstatus ändert.

Es gibt drei Methoden, um auf Änderungen des Authentifizierungsstatus zu reagieren:

authStateChanges()

Rufen Sie die Methode authStateChanges() 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 Methode userChanges() 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.currentUser aufgerufen werden:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Authentifizierungsstatus beibehalten

Die Firebase SDKs für alle Plattformen bieten sofort einsatzbereite Unterstützung, damit der Authentifizierungsstatus Ihrer Nutzer bei Neustarts der App oder Seitenneuladungen beibehalten wird.

Auf nativen Plattformen wie Android und iOS ist dieses Verhalten nicht konfigurierbar und 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. Sie können die Persistenz ändern, um Daten im lokalen Speicher zu speichern. Verwenden Sie dazu Persistence.LOCAL. 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 erfahren Sie, wie Sie Nutzer mit den unterstützten Identitäts- und Authentifizierungsdiensten anmelden und registrieren.