Pierwsze kroki z Uwierzytelnianiem Firebase w Flutter

Łączenie aplikacji z Firebase

Zainstaluj i zainicjuj pakiety SDK Firebase na potrzeby Flutter. tak.

Dodaj Uwierzytelnianie Firebase do swojej aplikacji

  1. W katalogu głównym projektu Flutter uruchom poniższe polecenie, aby zainstalować wtyczka:

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

    flutter run
    
  3. Zaimportuj wtyczkę do kodu Dart:

    import 'package:firebase_auth/firebase_auth.dart';
    

Aby używać dostawcy uwierzytelniania, musisz go włączyć w konsoli Firebase. Otwórz stronę Metoda logowania w sekcji Uwierzytelnianie Firebase i włącz logowania za pomocą adresu e-mail/hasła i innych dostawców tożsamości, których chcesz używać w swojej aplikacji.

(Opcjonalnie) Prototypowanie i testowanie w Pakiecie emulatorów lokalnych Firebase

Zanim przejdziemy do omówienia sposobu uwierzytelniania użytkowników przez Twoją aplikację, narzędzia służące do prototypowania i testowania funkcji uwierzytelniania: Pakiet emulatorów lokalnych Firebase. Jeśli zastanawiasz się nad techniką uwierzytelniania i usługodawcom, testując różne modele danych z wykorzystaniem danych publicznych i prywatnych za pomocą uwierzytelniania i reguł zabezpieczeń Firebase lub prototypowania interfejsu logowania, pracować lokalnie bez wdrażania usług w czasie rzeczywistym.

Emulator uwierzytelniania jest częścią Pakietu emulatorów lokalnych, umożliwia aplikacji interakcję z emulowaną treścią i konfiguracją bazy danych a także opcjonalnie emulowane zasoby projektu (funkcje, inne bazy danych, i reguły zabezpieczeń).

Aby zacząć korzystać z emulatora uwierzytelniania, wystarczy kilka kroków:

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

  2. Uruchomienie firebase emulators:start w katalogu głównym projektu lokalnego.

  3. przy użyciu interfejsu użytkownika Pakietu emulatorów lokalnych do interaktywnego prototypowania; Interfejs API typu REST emulatora uwierzytelniania do testowania nieinteraktywnego.

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

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

Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem uwierzytelniania. Więcej informacji znajdziesz we wprowadzeniu do Pakietu emulatorów lokalnych.

Teraz przejdźmy do uwierzytelniania użytkowników.

Sprawdź bieżący stan uwierzytelniania

Uwierzytelnianie Firebase udostępnia wiele metod i narzędzi umożliwiających integrację i zabezpieczyć uwierzytelnianie w nowej lub istniejącej aplikacji Flutter. W wielu musisz znać stan uwierzytelniania użytkownika, np. czy są zalogowani.

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

Istnieją 3 metody nasłuchiwania zmian stanu uwierzytelniania:

authStateChanges()

Aby zasubskrybować te zmiany, wywołaj metodę authStateChanges() na Instancja FirebaseAuth:

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

Zdarzenia są wywoływane, gdy:

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

idTokenChanges()

Aby zasubskrybować te zmiany, wywołaj metodę idTokenChanges() na Instancja FirebaseAuth:

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

Zdarzenia są wywoływane, gdy:

  • Zaraz po zarejestrowaniu słuchacza.
  • Gdy użytkownik jest zalogowany.
  • Kiedy bieżący użytkownik jest wylogowany.
  • Zmiana tokena bieżącego użytkownika.

userChanges()

Aby zasubskrybować te zmiany, wywołaj metodę userChanges() na Instancja FirebaseAuth:

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

Zdarzenia są wywoływane, gdy:

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

Trwały stan uwierzytelniania

Pakiety SDK Firebase dla wszystkich platform zapewniają gotową obsługę, stan uwierzytelniania użytkownika utrzymuje się po ponownym uruchomieniu aplikacji lub na stronie. ładuje się ponownie.

Na platformach natywnych, takich jak Android i iOS, tego zachowania nie można skonfigurować a stan uwierzytelniania użytkownika będzie zachowywany na urządzeniu między aplikacjami uruchomi się ponownie. Użytkownik może wyczyścić dane aplikacji zapisane w pamięci podręcznej w ustawieniach urządzenia. co spowoduje wyczyszczenie wszystkich zapisanych stanów.

Na platformach internetowych stan uwierzytelniania użytkownika jest przechowywany w IndexedDB. Trwałość możesz zmienić, aby dane były przechowywane w pamięci lokalnej za pomocą funkcji Persistence.LOCAL. W razie potrzeby możesz zmienić to domyślne działanie tak, aby było trwałe stan uwierzytelniania bieżącej sesji. Aby skonfigurować użyj metody FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);. Nadal możesz zaktualizować trwałość każdej instancji uwierzytelniania 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 po logowaniu i rejestrowaniu użytkowników w usług określania tożsamości i uwierzytelniania.