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

Firebase-Authentifizierung zu Ihrer App hinzufügen

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

    flutter pub add firebase_auth
    
  2. Erstellen Sie danach 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 per E-Mail/Passwort und alle anderen Identitätsanbieter zu aktivieren, die Sie für Ihre App verwenden möchten.

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

Bevor wir uns damit befassen, wie Ihre App Nutzer authentifiziert, stellen wir Ihnen eine Reihe von Tools vor, mit denen Sie Prototypen für Authentifizierungsfunktionen erstellen und diese testen können: die Firebase Local Emulator Suite. Wenn Sie zwischen Authentifizierungstechniken und Anbietern, die verschiedene Datenmodelle mit öffentlichen und privaten Daten Authentifizierungs- und Firebase-Sicherheitsregeln oder das Prototyping von Benutzeroberflächendesigns für Anmeldungen, ohne Live-Dienste lokal zu arbeiten, kann eine gute Idee sein.

Ein Authentication Emulator ist Teil der Local Emulator Suite, ermöglicht es Ihrer App, mit emulierten Datenbankinhalten und -konfigurationen zu interagieren, sowie optional Ihre emulierten Projektressourcen (Funktionen, andere Datenbanken, und Sicherheitsregeln).

Zur Verwendung des Authentication Emulators sind nur wenige Schritte erforderlich:

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

  3. Die Benutzeroberfläche der Local Emulator Suite für interaktives Prototyping oder den Authentifizierungsemulator REST API für nicht interaktive Tests

  4. Rufen Sie useAuthEmulator() auf, um die Adresse und den Port des Emulators 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 App mit dem Authentifizierungsemulator verbinden. Weitere Informationen finden Sie in der Einführung zur Local Emulator Suite.

Fahren wir nun mit der Authentifizierung von Nutzern fort.

Aktuellen Authentifizierungsstatus prüfen

Firebase Auth bietet viele Methoden und Dienstprogramme, mit denen Sie sichere Authentifizierung bei Ihrer neuen oder bestehenden Flutter-Anwendung. In vielen müssen Sie den Authentifizierungsstatus des Nutzers kennen z. B. ob sie an- oder abgemeldet sind.

Firebase Auth ermöglicht es Ihnen, diesen Status in Echtzeit über eine Stream Nach dem Aufruf liefert der Stream ein sofortiges Ereignis der aktuellen Authentifizierungsstatus und gibt dann nachfolgende Ereignisse aus, ändert sich der Authentifizierungsstatus.

Es gibt drei Methoden, um Änderungen des Authentifizierungsstatus zu überwachen:

authStateChanges()

Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode authStateChanges() auf Ihrem FirebaseAuth-Instanz:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Ereignisse werden in folgenden Fällen ausgelöst:

  • Direkt nach der Registrierung des Listeners.
  • Ein Nutzer ist angemeldet.
  • Wenn der aktuelle Nutzer abgemeldet ist.

idTokenChanges()

Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode idTokenChanges() auf Ihrem FirebaseAuth-Instanz:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Ereignisse werden in folgenden Fällen ausgelöst:

  • Direkt nach der Registrierung des Listeners.
  • Ein Nutzer ist angemeldet.
  • Wenn der aktuelle Nutzer abgemeldet ist.
  • Wenn sich das Token des aktuellen Nutzers ändert.

userChanges()

Wenn Sie diese Änderungen abonnieren möchten, rufen Sie die Methode userChanges() auf Ihrem FirebaseAuth-Instanz:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Ereignisse werden in folgenden Fällen ausgelöst:

  • Direkt nach der Registrierung des Listeners.
  • Ein Nutzer ist angemeldet.
  • Wenn der aktuelle Nutzer abgemeldet ist.
  • Wenn sich das Token des aktuellen Nutzers ändert.
  • Wenn die folgenden von FirebaseAuth.instance.currentUser bereitgestellten Methoden aufgerufen werden:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Authentifizierungsstatus beibehalten

Die Firebase SDKs für alle Plattformen bieten sofortigen Support, damit Sie sicher sein können, Der Authentifizierungsstatus des Nutzers bleibt bei jedem Neustart der App oder auf der Seite erhalten. neu geladen wird.

Auf nativen Plattformen wie Android und iOS, dieses Verhalten kann nicht konfiguriert werden und der Authentifizierungsstatus des Nutzers zwischen der App neu gestartet. Der Nutzer kann die im Cache gespeicherten App-Daten über die Geräteeinstellungen löschen, Dadurch werden alle gespeicherten 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 mit Persistence.LOCAL. Bei Bedarf können Sie dieses Standardverhalten so ändern, dass es nur dauerhaft gilt. Authentifizierungsstatus für die aktuelle Sitzung oder gar nicht vorhanden ist. So konfigurieren Sie diese Einstellungen, rufen Sie die folgende Methode auf: FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);. Sie können die Persistenz für jede Auth-Instanz mithilfe von 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

Lesen Sie die Anleitungen zum Anmelden und Registrieren von Nutzern mit den unterstützten Identitäts- und Authentifizierungsdienste.