Rozpocznij korzystanie z uwierzytelniania Firebase na Flutter

Połącz swoją aplikację z Firebase

Zainstaluj i zainicjuj zestawy SDK Firebase dla Flutter, jeśli jeszcze tego nie zrobiłeś.

Dodaj uwierzytelnianie Firebase do swojej aplikacji

  1. W katalogu głównym projektu Flutter uruchom następujące polecenie, aby zainstalować wtyczkę:

    flutter pub add firebase_auth
    
  2. Po zakończeniu odbuduj aplikację Flutter:

    flutter run
    
  3. Zaimportuj wtyczkę do swojego kodu Dart:

    import 'package:firebase_auth/firebase_auth.dart';
    

Aby skorzystać z dostawcy uwierzytelniania, musisz go włączyć w konsoli Firebase . Przejdź do strony Metoda logowania w sekcji Uwierzytelnianie Firebase, aby włączyć logowanie za pomocą poczty e-mail/hasła i innych dostawców tożsamości, których chcesz dla swojej aplikacji.

(Opcjonalnie) Stwórz prototyp i przetestuj za pomocą pakietu Firebase Local Emulator Suite

Zanim porozmawiamy o tym, jak Twoja aplikacja uwierzytelnia użytkowników, przedstawmy zestaw narzędzi, których możesz użyć do prototypowania i testowania funkcjonalności uwierzytelniania: Firebase Local Emulator Suite. Jeśli decydujesz pomiędzy technikami uwierzytelniania i dostawcami, wypróbowujesz różne modele danych z danymi publicznymi i prywatnymi przy użyciu reguł uwierzytelniania i zabezpieczeń Firebase lub tworzysz prototypy projektów interfejsu użytkownika logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być świetnym pomysłem .

Emulator uwierzytelniania jest częścią pakietu Local Emulator Suite, który umożliwia interakcję aplikacji z zawartością i konfiguracją emulowanej bazy danych, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami bezpieczeństwa).

Korzystanie z emulatora uwierzytelniania obejmuje tylko kilka kroków:

  1. Dodanie wiersza kodu do konfiguracji testowej aplikacji w celu nawiązania połączenia z emulatorem.

  2. Z katalogu głównego lokalnego katalogu projektu uruchom firebase emulators:start .

  3. Używanie interfejsu użytkownika pakietu lokalnego emulatora do interaktywnego prototypowania lub interfejsu API REST emulatora uwierzytelniania do testowania nieinteraktywnego.

  4. Wywołaj useAuthEmulator() , aby określić adres i port emulatora:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

Szczegółowy przewodnik jest dostępny na stronie Połącz aplikację z emulatorem uwierzytelniania . Aby uzyskać więcej informacji, zobacz wprowadzenie do pakietu emulatorów lokalnych .

Przejdźmy teraz do sposobu uwierzytelniania użytkowników.

Sprawdź aktualny stan autoryzacji

Firebase Auth udostępnia wiele metod i narzędzi umożliwiających integrację bezpiecznego uwierzytelniania z nową lub istniejącą aplikacją Flutter. W wielu przypadkach będziesz musiał znać stan uwierzytelnienia użytkownika, na przykład to, czy jest on zalogowany, czy wylogowany.

Firebase Auth umożliwia subskrybowanie tego stanu w czasie rzeczywistym za pośrednictwem Stream . Po wywołaniu strumień zapewnia natychmiastowe zdarzenie dotyczące bieżącego stanu uwierzytelnienia użytkownika, a następnie udostępnia kolejne zdarzenia za każdym razem, gdy zmienia się stan uwierzytelniania.

Istnieją trzy metody nasłuchiwania zmian stanu uwierzytelniania:

authStateChanges()

Aby zasubskrybować te zmiany, wywołaj metodę authStateChanges() w swojej instancji FirebaseAuth :

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

Zdarzenia są uruchamiane, gdy wystąpią następujące zdarzenia:

  • Zaraz po zarejestrowaniu słuchacza.
  • Gdy użytkownik jest zalogowany.
  • Gdy bieżący użytkownik jest wylogowany.

idTokenChanges()

Aby zasubskrybować te zmiany, wywołaj metodę idTokenChanges() w swojej instancji FirebaseAuth :

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

Zdarzenia są uruchamiane, gdy wystąpią następujące zdarzenia:

  • Zaraz po zarejestrowaniu słuchacza.
  • Gdy użytkownik jest zalogowany.
  • Gdy bieżący użytkownik jest wylogowany.
  • Gdy nastąpi zmiana w tokenie bieżącego użytkownika.

userChanges()

Aby zasubskrybować te zmiany, wywołaj metodę userChanges() w swojej instancji FirebaseAuth :

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

Zdarzenia są uruchamiane, gdy wystąpią następujące zdarzenia:

  • Zaraz po zarejestrowaniu słuchacza.
  • Gdy użytkownik jest zalogowany.
  • Gdy bieżący użytkownik jest wylogowany.
  • Gdy nastąpi zmiana w tokenie bieżącego użytkownika.
  • Gdy wywoływane są następujące metody udostępniane przez FirebaseAuth.instance.currentUser :
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Trwały stan uwierzytelniania

Pakiety SDK Firebase dla wszystkich platform zapewniają gotową obsługę, która gwarantuje, że stan uwierzytelnienia użytkownika zostanie utrwalony po ponownym uruchomieniu aplikacji lub ponownym załadowaniu strony.

Na platformach natywnych, takich jak Android i iOS, tego zachowania nie można skonfigurować, a stan uwierzytelnienia użytkownika będzie zachowywany na urządzeniu pomiędzy ponownymi uruchomieniami aplikacji. Użytkownik może wyczyścić dane aplikacji w pamięci podręcznej, korzystając z ustawień urządzenia, co spowoduje wyczyszczenie istniejącego stanu.

Na platformach internetowych stan uwierzytelnienia użytkownika jest przechowywany w IndexedDB . Możesz zmienić trwałość przechowywania danych w magazynie lokalnym za pomocą Persistence.LOCAL . W razie potrzeby możesz zmienić to domyślne zachowanie, aby utrzymywać stan uwierzytelniania tylko w bieżącej sesji lub nie utrzymywać go wcale. Aby skonfigurować te ustawienia, wywołaj następującą metodę FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . Nadal możesz zaktualizować trwałość każdej instancji Auth za pomocą 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);

Następne kroki

Zapoznaj się z przewodnikami dotyczącymi logowania i rejestrowania użytkowników przy użyciu obsługiwanych usług tożsamości i uwierzytelniania.