Flutter'da Firebase Authentication'ı Kullanmaya Başlama

Uygulamanızı Firebase'e bağlama

Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyip başlatın öyle.

Firebase Authentication'ı uygulamanıza ekleyin

  1. Flutter projenizin kök dizininden aşağıdaki komutu çalıştırarak girin:

    flutter pub add firebase_auth
    
  2. Ardından Flutter uygulamanızı yeniden derleyin:

    flutter run
    
  3. Eklentiyi Dart kodunuza içe aktarın:

    import 'package:firebase_auth/firebase_auth.dart';
    

Bir kimlik doğrulama sağlayıcı kullanmak için bu sağlayıcıyı Firebase konsolunda etkinleştirmeniz gerekir. Etkinleştirmek için Firebase Authentication bölümündeki Oturum Açma Yöntemi sayfasına gidin E-posta/Şifre ile oturum açma ve uygulamanız için istediğiniz diğer kimlik sağlayıcılar.

(İsteğe bağlı) Firebase Local Emulator Suite ile prototip oluşturun ve test edin

Uygulamanızın, kullanıcıların kimliğini nasıl doğruladığından bahsetmeden önce Kimlik doğrulama işlevinin prototipini oluşturmak ve test etmek için kullanabileceğiniz araçlar: Firebase Local Emulator Suite. Kimlik doğrulama teknikleri arasında karar vermeye ortak ve gizli verilerle farklı veri modellerini deneyerek oturum açma kullanıcı arayüzü tasarımlarının prototipini oluşturarak kimlik doğrulama ve güvenlik kurallarını yerel olarak çalışmak sizin için harika bir fikir olabilir.

Kimlik Doğrulama emülatörü, Yerel Emulator Suite'in bir parçasıdır. uygulamanızın emüle edilmiş veritabanı içeriği ve yapılandırmasıyla etkileşimde bulunmasını sağlar. ve isteğe bağlı olarak emüle edilen proje kaynaklarınızın (işlevler, diğer veritabanları ve güvenlik kuralları) ekleyin.

Kimlik Doğrulama emülatörünün kullanımı yalnızca birkaç adımdan oluşur:

  1. Emülatöre bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleme.

  2. Yerel proje dizininizin kök dizininden firebase emulators:start komutunu çalıştırın.

  3. Etkileşimli prototip oluşturmak için Local Emulator Suite kullanıcı arayüzünü kullanmak veya Etkileşimli olmayan test için kimlik doğrulama emülatörü REST API.

  4. Emülatör adresini ve bağlantı noktasını belirtmek için useAuthEmulator() komutunu çağırın:

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

Uygulamanızı Kimlik Doğrulama emülatörüne bağlama başlıklı makalede ayrıntılı bir kılavuz bulabilirsiniz. Daha fazla bilgi için Local Emulator Suite tanıtımı konusuna bakın.

Şimdi kullanıcı kimliğinin nasıl doğrulanacağına geçelim.

Mevcut kimlik doğrulama durumunu kontrol et

Firebase Auth, entegrasyon gerçekleştirmenizi sağlayacak birçok yöntem ve yardımcı program sunar. yeni veya mevcut Flutter uygulamanızda güvenli bir kimlik doğrulama seçeneği sunar. Birçok konuda durumlarda, kullanıcınızın kimlik doğrulama durumunu bilmeniz gerekir. Örneğin, oturum açmış olup olmadıkları veya çıkış yapıp yapmadıkları gibi.

Firebase Auth, bir Android kodu aracılığıyla bu duruma gerçek zamanlı olarak abone olmanızı sağlar. Stream. Çağrı yapıldıktan sonra akış, kullanıcının o anda bulunduğu gerçek kimlik doğrulama durumunu kontrol eder ve her seferinde kimlik doğrulama durumu değişir.

Kimlik doğrulama durumu değişikliklerini dinlemenin üç yöntemi vardır:

authStateChanges()

Bu değişikliklere abone olmak içinauthStateChanges() FirebaseAuth örneği:

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

Etkinlikler, aşağıdaki durumlarda tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Kullanıcı oturum açtığında.
  • Geçerli kullanıcı oturumu kapattığında.

idTokenChanges()

Bu değişikliklere abone olmak içinidTokenChanges() FirebaseAuth örneği:

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

Etkinlikler, aşağıdaki durumlarda tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Kullanıcı oturum açtığında.
  • Geçerli kullanıcı oturumu kapattığında.
  • Geçerli kullanıcının jetonunda bir değişiklik olduğunda.

userChanges()

Bu değişikliklere abone olmak içinuserChanges() FirebaseAuth örneği:

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

Etkinlikler, aşağıdaki durumlarda tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Kullanıcı oturum açtığında.
  • Geçerli kullanıcı oturumu kapattığında.
  • Geçerli kullanıcının jetonunda bir değişiklik olduğunda.
  • FirebaseAuth.instance.currentUser tarafından sağlanan aşağıdaki yöntemler çağrıldığında:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Kimlik doğrulama durumu devam ediyor

Tüm platformlar için Firebase SDK'ları, kullanıma hazır destek sağlayarak Kullanıcınızın kimlik doğrulama durumunun uygulama yeniden başlatma işlemleri veya uygulama sayfası genelinde de devam ettiği yeniden yüklenir.

Android ve iOS gibi yerel platformlarda iOS için bu davranış yapılandırılamaz Ayrıca kullanıcının kimlik doğrulama durumu cihazdaki uygulamalar arasında korunur. yeniden başlatılır. Kullanıcı, cihaz ayarlarını kullanarak uygulamaların önbelleğe alınan verilerini temizleyebilir, Bu işlem, depolanmakta olan mevcut durumları siler.

Web platformlarında, kullanıcının kimlik doğrulama durumu IndexedDB. Verileri yerel depolama alanında depolamak için kalıcılığı değiştirebilirsiniz. Persistence.LOCAL kullanılıyor. Gerekirse bu varsayılan davranışı yalnızca kalıcı olacak şekilde değiştirebilirsiniz. kimlik doğrulama durumunun mevcut olup olmadığını kontrol eder. Bunları yapılandırmak için için şu yöntemi çağırın: FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);. Yine de setPersistence(Persistence.NONE) kullanarak her Auth örneği için kalıcılığı güncelleyebilirsiniz.

// 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);

Sonraki adımlar

Desteklenen güvenlik sistemleriyle oturum açma ve kullanıcıları kaydettirme kimlik ve kimlik doğrulama hizmetleri.