Hata Nedir ve Nerede Karşılaşırsınız?
Örneğin, uygulamanızda kullanıcıların belirli verileri almasını veya yazmasını istiyorsanız, Firebase’in güvenlik kurallarını düzgün bir şekilde yapılandırmalısınız. Eğer bu güvenlik kuralları, kullanıcının talep ettiği işlem için yeterli izni sağlamazsa, "Missing or insufficient permissions" hatası alırsınız.
Neden Bu Hata Alırım?
Hata Çözüm Adımları
İlk yapmanız gereken şey, Firestore ya da Realtime Database güvenlik kurallarınızı kontrol etmek olmalı. Firebase, her okuma ve yazma işlemi için bir izin mekanizması sunar. Eğer bu kurallar doğru yapılandırılmamışsa, kullanıcıların veritabanınıza erişimi kısıtlanabilir.
Örnek Firestore Güvenlik Kuralı:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Bu örnekte, yalnızca kimlik doğrulaması yapılmış ve doğru kullanıcı kimliğiyle eşleşen kullanıcıların, veritabanına yazma veya okuma yapmasına izin verilmektedir. Eğer güvenlik kurallarınız buna benzer bir yapıya sahip değilse, Firebase bu hatayı verebilir.
2. Firebase Authentication'ı Kontrol Edin
Eğer uygulamanızda Firebase Authentication kullanıyorsanız, kullanıcıların doğru bir şekilde giriş yapıp yapmadığını kontrol edin. Firebase, sadece kimlik doğrulaması yapılmış kullanıcıların verilere erişmesine izin verir. Bu nedenle, request.auth objesinin doğru şekilde alındığını ve geçerli bir kullanıcıya işaret ettiğinden emin olun.
Örnek Kod:
firebase.auth().onAuthStateChanged(user => {
if (user) {
// Kullanıcı giriş yaptı
console.log("User is logged in:", user);
} else {
// Kullanıcı giriş yapmadı
console.log("No user is logged in");
}
});
3. Veritabanı Erişim Kurallarını Gözden Geçirin
Firebase güvenlik kuralları, sadece kullanıcı doğrulamasını değil, aynı zamanda veritabanı erişim seviyelerini de belirler. Yani, kullanıcıların hangi koleksiyonlara ve belgelere erişebileceği de burada tanımlanır. Eğer güvenlik kurallarında bir hata yaparsanız veya bazı kurallar eksik olursa, bu hatayı alabilirsiniz.
Örnek Realtime Database Güvenlik Kuralı:
{
"rules": {
"users": {
"$user_id": {
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
4. Test Edin ve Hata Ayıklayın
Güvenlik kurallarınızı güncelledikten sonra, her zaman Firebase Emulator kullanarak uygulamanızda güvenlik kurallarının doğru çalışıp çalışmadığını test edin. Emulator, Firebase servislerinizi gerçek veritabanına bağlanmadan yerel olarak test etmenize olanak tanır. Böylece herhangi bir güvenlik hatası olmadan uygulamanızın tüm fonksiyonlarını kontrol edebilirsiniz.
Örnek Firebase Emulator ile Test:
firebase emulators:start --only firestore
Hata Aldığınızda Panik Yapmayın!
Eğer her şey doğru görünüyor ama hata hala devam ediyorsa, Firebase Console'da hata mesajlarını dikkatlice inceleyin ve gerekirse Firebase Support ile iletişime geçin. Her zaman yardım alabileceğiniz kaynaklar mevcut!