Uygulamanızı Firebase'e bağlama
Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyin ve başlatın.
Uygulamanıza Firebase Authentication ekleme
Eklentiyi yüklemek için Flutter projenizin kökünden aşağıdaki komutu çalıştırın:
flutter pub add firebase_authİşlem tamamlandıktan sonra Flutter uygulamanızı yeniden oluşturun:
flutter runEklentiyi Dart kodunuza aktarın:
import 'package:firebase_auth/firebase_auth.dart';
Bir kimlik doğrulama sağlayıcısını kullanmak için Firebase konsolunda etkinleştirmeniz gerekir. Firebase Authentication bölümündeki Oturum Açma Yöntemi sayfasına giderek e-posta/şifre ile oturum açma özelliğini ve uygulamanız için istediğiniz diğer kimlik sağlayıcıları etkinleştirin.
(İsteğe bağlı) Firebase Local Emulator Suite ile prototip oluşturma ve test etme
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 araç setini 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 herkese açık ve özel verilerle farklı veri modellerini deniyorsanız veya oturum açma kullanıcı arayüzü tasarımlarının prototipini oluşturuyorsanız canlı hizmetleri dağıtmadan yerel olarak çalışabilmek harika bir fikir olabilir.
Authentication Emulator, Local Emulator Suite'in bir parçasıdır. Bu araç, uygulamanızın emüle edilmiş veritabanı içeriği ve yapılandırmasıyla etkileşim kurmasına ve isteğe bağlı olarak emüle edilmiş proje kaynaklarınızla (işlevler, diğer veritabanları ve güvenlik kuralları) etkileşim kurmasına olanak tanır.
Kimlik doğrulama emülatörünü kullanmak için yalnızca birkaç adım gerekir:
Emülatöre bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleyin.
Yerel proje dizininizin kökünden
firebase emulators:startkomutunu çalıştırın.Etkileşimli prototip oluşturma için Local Emulator Suite kullanıcı arayüzünü veya etkileşimsiz test için Authentication Emulator REST API'yi kullanabilirsiniz.
Emülatör adresini ve bağlantı noktasını belirtmek için
useAuthEmulator()işlevini çağırın:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
Ayrıntılı kılavuzu Uygulamanızı kimlik doğrulama emülatörüne bağlama başlıklı makalede bulabilirsiniz. Daha fazla bilgi için Local Emulator Suite'e giriş başlıklı makaleyi inceleyin.
Şimdi kullanıcıların kimliğini nasıl doğrulayacağımıza geçelim.
Mevcut kimlik doğrulama durumunu kontrol etme
Firebase Auth, yeni veya mevcut Flutter uygulamanıza güvenli kimlik doğrulama entegre etmenizi sağlayacak birçok yöntem ve yardımcı program sunar. Çoğu durumda, kullanıcınızın kimlik doğrulama durumu hakkında bilgi sahibi olmanız gerekir. Örneğin, kullanıcının oturumunun açık mı yoksa kapalı mı olduğunu bilmeniz gerekir.
Firebase Auth, Stream aracılığıyla bu duruma gerçek zamanlı olarak abone olmanızı sağlar.
Akış çağrıldığında kullanıcının mevcut kimlik doğrulama durumuyla ilgili anlık bir etkinlik sağlar ve ardından kimlik doğrulama durumu her değiştiğinde sonraki etkinlikleri sağlar.
Kimlik doğrulama durumu değişikliklerini dinlemek için üç yöntem vardır:
authStateChanges()
Bu değişikliklere abone olmak için authStateChanges() örneğinizde FirebaseAuth 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ğıdaki durumlar gerçekleştiğinde etkinlikler tetiklenir:
- İşleyici kaydedildikten hemen sonra.
- 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 idTokenChanges() örneğinizde FirebaseAuth 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ğıdaki durumlar gerçekleştiğinde etkinlikler tetiklenir:
- İşleyici kaydedildikten hemen sonra.
- Kullanıcı oturum açtığında
- Geçerli kullanıcının oturumu kapatıldığında.
- Mevcut kullanıcının jetonunda değişiklik olduğunda
userChanges()
Bu değişikliklere abone olmak için userChanges() örneğinizde FirebaseAuth 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ğıdaki durumlar gerçekleştiğinde etkinlikler tetiklenir:
- İşleyici kaydedildikten hemen sonra.
- Kullanıcı oturum açtığında
- Geçerli kullanıcının oturumu kapatıldığında.
- Mevcut kullanıcının jetonunda değişiklik olduğunda
FirebaseAuth.instance.currentUsertarafından sağlanan aşağıdaki yöntemler çağrıldığında:reload()unlink()updateEmail()updatePassword()updatePhoneNumber()updateProfile()
Kimlik doğrulama durumunu kalıcı hale getirme
Tüm platformlar için 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 hazır destek sunar.
Android ve iOS gibi yerel platformlarda bu davranış yapılandırılamaz ve kullanıcının kimlik doğrulama durumu, uygulama yeniden başlatıldığında cihazda kalıcı hale getirilir. Kullanıcı, cihaz ayarlarını kullanarak uygulamaların önbelleğe alınmış verilerini temizleyebilir. Bu işlem, depolanan mevcut durumu siler.
Web platformlarında kullanıcının kimlik doğrulama durumu IndexedDB'de depolanır.
Persistence.LOCAL kullanarak verileri yerel depolama alanında saklamak için kalıcılığı değiştirebilirsiniz.
Gerekirse bu varsayılan davranışı yalnızca geçerli oturum için kimlik doğrulama durumunu kalıcı kılacak veya hiç kalıcı kılmayacak şekilde değiştirebilirsiniz. Bu ayarları yapılandırmak için aşağıdaki yöntemi FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); çağırın.
setPersistence(Persistence.NONE) kullanarak her Auth örneğinin kalıcılığını 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 oturumunu açma ve kullanıcıları kaydetme hakkındaki kılavuzları inceleyin.