查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

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 . 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:

  1. Hinzufügen einer Codezeile zur Testkonfiguration Ihrer App, um eine Verbindung mit dem Emulator herzustellen.

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

  3. Verwenden der Benutzeroberfläche der Local Emulator Suite für interaktives Prototyping oder der REST-API des Authentifizierungsemulators für nicht interaktives Testen.

  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 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.

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()

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.