Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Zacznij korzystać z uwierzytelniania Firebase na Flutter

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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ę w kodzie Dart:

    import 'package:firebase_auth/firebase_auth.dart';
    

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

(Opcjonalnie) Prototypowanie i testowanie za pomocą pakietu Firebase Local Emulator Suite

Zanim zaczniemy mówić 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 się między technikami i dostawcami uwierzytelniania, wypróbowujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą uwierzytelniania i reguł zabezpieczeń Firebase lub tworzysz prototypy projektów interfejsu logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być świetnym pomysłem .

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

Korzystanie z emulatora uwierzytelniania obejmuje tylko kilka kroków:

  1. Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.

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

  3. Korzystanie z interfejsu użytkownika lokalnego pakietu emulatorów 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 w artykule Połącz swoją aplikację z emulatorem uwierzytelniania . Aby uzyskać więcej informacji, zobacz wprowadzenie do lokalnego pakietu emulatorów .

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

Sprawdź aktualny stan uwierzytelniania

Firebase Auth udostępnia wiele metod i narzędzi umożliwiających zintegrowanie bezpiecznego uwierzytelniania z nową lub istniejącą aplikacją Flutter. W wielu przypadkach będziesz potrzebować informacji o stanie uwierzytelniania użytkownika, na przykład o tym, czy jest zalogowany, czy wylogowany.

Uwierzytelnianie Firebase umożliwia subskrybowanie tego stanu w czasie rzeczywistym za pomocą Stream . Po wywołaniu strumień zapewnia natychmiastowe zdarzenie bieżącego stanu uwierzytelniania użytkownika, a następnie udostępnia kolejne zdarzenia, gdy stan uwierzytelniania ulegnie zmianie.

Istnieją trzy metody nasłuchiwania zmian stanu uwierzytelniania:

authStateChanges()

Aby zasubskrybować te zmiany, wywołaj metodę authStateChanges() w 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 zostanie wylogowany.

idTokenChanges()

Aby zasubskrybować te zmiany, wywołaj metodę idTokenChanges() w 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 zostanie wylogowany.
  • Gdy następuje zmiana w tokenie bieżącego użytkownika.

userChanges()

Aby zasubskrybować te zmiany, wywołaj metodę userChanges() w 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 zostanie wylogowany.
  • Gdy następuje 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ę, dzięki czemu stan uwierzytelniania użytkownika jest utrwalany 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 uwierzytelniania użytkownika będzie utrwalany na urządzeniu między ponownymi uruchomieniami aplikacji. Użytkownik może wyczyścić dane z pamięci podręcznej aplikacji, korzystając z ustawień urządzenia, co spowoduje wyczyszczenie istniejącego zapisanego stanu.

Na platformach internetowych stan uwierzytelniania użytkownika jest przechowywany w IndexedDB . Możesz zmienić trwałość, aby przechowywać dane w magazynie lokalnym , używając Persistence.LOCAL . W razie potrzeby możesz zmienić to domyślne zachowanie, aby zachować tylko stan uwierzytelniania dla bieżącej sesji lub 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ść dla każdego wystąpienia 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 za pomocą obsługiwanych usług tożsamości i uwierzytelniania.