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ı yükleyin ve başlatın .

Uygulamanıza Firebase Kimlik Doğrulaması ekleyin

  1. Eklentiyi yüklemek için Flutter projenizin kökünden 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';
    

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

(İsteğe bağlı) Firebase Local Emulator Suite ile prototip yapın 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 bir dizi aracı tanıtalım: 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 kullanıcı arayüzü tasarımlarının prototipini oluşturmak istiyorsanız, canlı hizmetleri dağıtmadan yerel olarak çalışabilmek harika bir fikir olabilir .

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 çalıştırılıyor.

  3. Etkileşimli prototip oluşturma için Local Emulator Suite kullanıcı arayüzünü veya etkileşimli olmayan testler için Kimlik Doğrulama öykünücüsü REST API'yi kullanma.

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

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

Mevcut 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 sunar. Çoğu durumda, kullanıcınızın giriş yapmış veya çıkış yapmış olması gibi kimlik doğrulama durumunu bilmeniz gerekecektir.

Firebase Auth, Stream aracılığıyla bu duruma gerçek zamanlı olarak abone olmanızı sağlar. Akış, çağrıldıktan sonra kullanıcının mevcut kimlik doğrulama durumuna ilişkin anında bir olay sağlar ve ardından kimlik doğrulama durumu 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 meydana geldiğ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 meydana geldiğ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 meydana geldiğ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 platformlara yönelik Firebase SDK'ları, kullanıcınızın kimlik doğrulama durumunun uygulama yeniden başlatıldığında veya sayfa yeniden yüklendiğinde kalıcı olmasını sağlamak için kullanıma 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, uygulamanın yeniden başlatılması arasında cihazda kalıcı olur. Kullanıcı, cihaz ayarlarını kullanarak uygulamanın önbelleğe alınmış verilerini temizleyebilir; bu, depolanan mevcut durumu silecektir.

Web platformlarında kullanıcının kimlik doğrulama durumu IndexedDB'de saklanır. Persistence.LOCAL kullanarak verileri yerel depolamada 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ç kullanmayacak şekilde değiştirebilirsiniz. Bu ayarları yapılandırmak için aşağıdaki 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ına ve kaydolmasına ilişkin kılavuzları keşfedin.