Beginnen Sie mit der Firebase-Authentifizierung auf Flutter

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

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

    flutter pub add firebase_auth
    
  2. Wenn Sie fertig sind, erstellen Sie Ihre Flutter-Anwendung neu:

    flutter run
    
  3. 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. Gehen Sie zur Seite „Anmeldemethode“ im Abschnitt „Firebase-Authentifizierung“, um die E-Mail-/Passwort-Anmeldung und alle anderen gewünschten Identitätsanbieter für Ihre App zu aktivieren.

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

Bevor wir darüber sprechen, wie Ihre App Benutzer authentifiziert, stellen wir eine Reihe von Tools vor, mit denen Sie Authentifizierungsfunktionen prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie sich für Authentifizierungstechniken und -anbieter entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentifizierungs- und Firebase-Sicherheitsregeln ausprobieren oder Prototypen für Anmelde-UI-Designs erstellen, kann die Möglichkeit, lokal zu arbeiten, ohne Live-Dienste bereitzustellen, eine gute Idee sein .

Ein Authentifizierungsemulator ist Teil der Local Emulator Suite, der 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 erfordert nur wenige Schritte:

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

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

  3. Verwenden der Local Emulator Suite-Benutzeroberfläche für interaktives Prototyping oder der Authentifizierungsemulator-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 ausführliche Anleitung finden Sie unter „Verbinden Sie Ihre App mit dem Authentifizierungsemulator“ . 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 bestehende Flutter-Anwendung integrieren können. In vielen Fällen müssen Sie den Authentifizierungsstatus Ihres Benutzers kennen, beispielsweise ob er angemeldet oder abgemeldet ist.

Mit Firebase Auth können Sie diesen Status über einen Stream in Echtzeit abonnieren. Nach dem Aufruf stellt der Stream ein sofortiges Ereignis über den aktuellen Authentifizierungsstatus des Benutzers bereit und stellt dann Folgeereignisse bereit, wenn sich der Authentifizierungsstatus ändert.

Es gibt drei Methoden zum Abhören von Authentifizierungsstatusänderungen:

authStateChanges()

Um diese Änderungen zu abonnieren, rufen Sie die Methode authStateChanges() auf 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 ist.

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 ist.
  • Wenn sich das Token des aktuellen Benutzers ändert.

userChanges()

Um diese Änderungen zu abonnieren, rufen Sie die Methode userChanges() auf 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 ist.
  • 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()

Anhaltender Authentifizierungsstatus

Die Firebase SDKs für alle Plattformen bieten sofort einsatzbereite Unterstützung, um sicherzustellen, dass der Authentifizierungsstatus Ihres Benutzers über App-Neustarts oder Seitenneuladungen hinweg erhalten bleibt.

Auf nativen Plattformen wie Android und iOS ist dieses Verhalten nicht konfigurierbar und der Authentifizierungsstatus des Benutzers bleibt zwischen App-Neustarts auf dem Gerät bestehen. Der Benutzer kann die zwischengespeicherten Daten der Apps mithilfe der Geräteeinstellungen löschen, wodurch alle vorhandenen gespeicherten Status gelöscht werden.

Auf Webplattformen wird der Authentifizierungsstatus des Benutzers 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 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); auf. . 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

Entdecken Sie die Anleitungen zum Anmelden und Registrieren von Benutzern mit den unterstützten Identitäts- und Authentifizierungsdiensten.