查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Flutter'da Firebase Kimlik Doğrulamasına Başlayın

Uygulamanızı Firebase'e bağlayın

Henüz yapmadıysanız , Flutter için Firebase SDK'larını kurun ve başlatın .

Uygulamanıza Firebase Kimlik Doğrulaması ekleyin

  1. Flutter projenizin kökünden eklentiyi kurmak için aşağıdaki komutu çalıştırın:

    flutter pub add firebase_auth
    
  2. Tamamlandığında, Flutter uygulamanızı yeniden oluşturun:

    flutter run
    
  3. Eklentiyi Dart kodunuza aktarın:

    import 'package:firebase_auth/firebase_auth.dart';
    

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

(İ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ığı hakkında konuşmadan önce, Kimlik Doğrulama işlevinin prototipini oluşturmak ve test etmek için kullanabileceğiniz bir dizi araçtan bahsedelim: Firebase Local Emulator Suite. Kimlik doğrulama teknikleri ve sağlayıcılar arasında karar veriyorsanız, Kimlik Doğrulama ve Firebase Güvenlik Kurallarını kullanarak genel ve özel verilerle farklı veri modellerini denemek veya oturum açma UI tasarımlarını prototiplemek istiyorsanız, canlı hizmetleri dağıtmadan yerel olarak çalışabilmek harika bir fikir olabilir. .

Bir Kimlik Doğrulama öykünücüsü, uygulamanızın öykünülmüş veritabanı içeriği ve yapılandırmasının yanı sıra isteğe bağlı olarak öykünülmüş proje kaynaklarınızla (işlevler, diğer veritabanları ve güvenlik kuralları) etkileşim kurmasını sağlayan Yerel Öykünücü Paketi'nin bir parçasıdır.

Kimlik Doğrulama öykünücüsünü kullanmak yalnızca birkaç adımı içerir:

  1. Öykünücüye bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleme.

  2. Yerel proje dizininizin kökünden, firebase emulators:start .

  3. Etkileşimli prototip oluşturma için Yerel Öykünücü Paketi Kullanıcı Arabirimi'ni veya etkileşimli olmayan testler için Kimlik Doğrulama öykünücüsü REST API'sini kullanma.

  4. Öykünücü adresini ve bağlantı noktasını belirtmek için useAuthEmulator() ç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 öykünücüsüne bağlayın bölümünde ayrıntılı bir kılavuz bulunmaktadır. Daha fazla bilgi için Local Emulator Suite tanıtımına bakın.

Şimdi, kullanıcıların kimliğinin nasıl doğrulanacağı ile devam edelim.

Geçerli kimlik doğrulama durumunu kontrol edin

Firebase Auth, güvenli kimlik doğrulamayı yeni veya mevcut Flutter uygulamanıza entegre etmenize olanak tanıyan birçok yöntem ve yardımcı program sağlar. Çoğu durumda, oturum açıp açmadıkları gibi kullanıcınızın kimlik doğrulama durumunu bilmeniz gerekir.

Firebase Auth, bir Stream aracılığıyla bu duruma gerçek zamanlı olarak abone olmanızı sağlar. Bir kez çağrıldığında, akış, kullanıcının mevcut kimlik doğrulama durumunun hemen bir olayını sağlar ve ardından, kimlik doğrulama durumu her değiştiğinde sonraki olayları sağlar.

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

authStateChanges()

Bu değişikliklere abone olmak için FirebaseAuth örneğinizde authStateChanges() yöntemini çağırın:

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

Aşağıdakiler gerçekleştiğinde olaylar tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Bir kullanıcı oturum açtığında.
  • Geçerli kullanıcının oturumu kapatıldığında.

idTokenChanges()

Bu değişikliklere abone olmak için FirebaseAuth örneğinizde idTokenChanges() yöntemini çağırın:

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

Aşağıdakiler gerçekleştiğinde olaylar tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Bir kullanıcı oturum açtığında.
  • Geçerli kullanıcının oturumu kapatıldığında.
  • Geçerli kullanıcının belirtecinde bir değişiklik olduğunda.

userChanges()

Bu değişikliklere abone olmak için FirebaseAuth örneğinizde userChanges() yöntemini çağırın:

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

Aşağıdakiler gerçekleştiğinde olaylar tetiklenir:

  • Dinleyici kaydedildikten hemen sonra.
  • Bir kullanıcı oturum açtığında.
  • Geçerli kullanıcının oturumu kapatıldığında.
  • Geçerli kullanıcının belirtecinde 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()

Kalıcı kimlik doğrulama durumu

Tüm platformlar için Firebase SDK'ları, uygulama yeniden başlatmaları veya sayfa yeniden yüklemeleri sırasında kullanıcınızın kimlik doğrulama durumunun kalıcı olmasını sağlamak için hazır destek sağlar.

Android ve iOS gibi yerel platformlarda bu davranış yapılandırılamaz ve kullanıcının kimlik doğrulama durumu, uygulama yeniden başlatmaları arasında cihazda kalıcı olur. Kullanıcı, depolanan mevcut durumları silecek olan cihaz ayarlarını kullanarak uygulamaların önbelleğe alınmış verilerini temizleyebilir.

Web platformlarında, kullanıcının kimlik doğrulama durumu IndexedDB'de saklanır. Persistence.LOCAL kullanarak yerel depolamada veri depolamak için kalıcılığı değiştirebilirsiniz. Gerekirse, bu varsayılan davranışı yalnızca geçerli oturum için kimlik doğrulama durumunu sürdürecek veya hiç değiştirmeyecek şekilde değiştirebilirsiniz. Bu ayarları yapılandırmak için şu yöntemi çağırın FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . setPersistence(Persistence.NONE) kullanarak her Auth örneğinin kalıcılığını yine de 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 kimlik ve kimlik doğrulama hizmetleriyle kullanıcıların oturum açması ve kaydolmasıyla ilgili kılavuzları keşfedin.