Bu hata, Firebase’in erişim kontrol sisteminde bir şeylerin ters gittiği anlamına gelir. Çoğunlukla, veritabanınıza veya diğer Firebase hizmetlerinize erişmeye çalışan kullanıcının gerekli izinlere sahip olmaması nedeniyle ortaya çıkar. Ama endişelenmeyin, bu yazı size bu hatayı çözmek için ihtiyacınız olan her şeyi adım adım gösterecek.
1. Firebase Güvenlik Kurallarını Kontrol Etmek
Firebase’in veritabanı ve diğer servisleri, güvenlik kuralları aracılığıyla erişimi kontrol eder. Bu kurallar, veritabanınızda kimlerin hangi verilere erişebileceğini belirler. Eğer yanlış güvenlik kuralları yapılandırıldıysa, bu hata ortaya çıkabilir.
Öncelikle Firebase Console'a gidin ve Firestore veya Realtime Database kısmını açın. Burada, güvenlik kurallarının doğru şekilde ayarlandığından emin olun. Aşağıdaki gibi basit bir örnek, veritabanına okuma ve yazma izinleri tanımlar:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=} {
allow read, write: if request.auth != null;
}
}
}
Bu örnekte, yalnızca kimlik doğrulama yapmış kullanıcılar veritabanını okuyabilir ve yazabilir. Eğer kurallarınızda yanlışlık varsa, bu hataya yol açabilir. Örneğin, request.auth != null kısmını değiştirmeyi unutmayın!
2. Kullanıcıların Kimlik Doğrulamasını Kontrol Etmek
Eğer kullanıcılarınızın kimlik doğrulaması düzgün yapılmamışsa, yine bu hatayı alabilirsiniz. Firebase’in kimlik doğrulama sistemini doğru şekilde yapılandırdığınızdan emin olun. Bir kullanıcı, Firebase Authentication ile giriş yapmadığı sürece veritabanına erişim sağlayamaz.
Örneğin, kullanıcıların giriş yapması için şu kodu kullanabilirsiniz:
// Firebase Authentication ile giriş yapma
firebase.auth().signInWithEmailAndPassword(email, password)
.then((userCredential) => {
var user = userCredential.user;
console.log("Giriş başarılı", user);
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.log("Giriş hatası:", errorMessage);
});
Bu basit giriş fonksiyonu ile kullanıcıların doğru şekilde sisteme giriş yapmalarını sağlayabilirsiniz. Eğer kullanıcı giriş yapmadıysa, Missing or Insufficient Permissions hatası ile karşılaşabilirsiniz.
3. Firebase İzinlerini İncelemek
Eğer yalnızca belirli kullanıcılara veya gruplara erişim izni vermek istiyorsanız, Firebase Firestore ya da Realtime Database’de belirli dokümanlara veya koleksiyonlara özel izinler tanımlayabilirsiniz.
Örneğin, sadece admin kullanıcıların belirli verileri yazabilmesi için şu şekilde bir güvenlik kuralı kullanabilirsiniz:
service cloud.firestore {
match /databases/{database}/documents {
match /adminData/{docId} {
allow write: if request.auth.token.admin == true;
allow read: if request.auth != null;
}
}
}
Bu kurallar, sadece admin rolüne sahip kullanıcılara veritabanındaki adminData koleksiyonuna yazma izni verir. Burada dikkat edilmesi gereken nokta, kullanıcının admin rolüne sahip olup olmadığının doğru şekilde kontrol edilmesidir.
4. Yetkilendirilmiş API Anahtarını Kontrol Etmek
API anahtarları da Firebase uygulamanızın doğru şekilde çalışabilmesi için gereklidir. Eğer bu anahtarlar eksik veya hatalıysa, Missing or Insufficient Permissions hatasını alabilirsiniz. API anahtarlarının doğru şekilde entegre edilip edilmediğini kontrol edin.
// Firebase API'yi başlatma
const firebaseConfig = {
apiKey: "SİZİN-API-ANAHTARINIZ",
authDomain: "proje-id.firebaseapp.com",
projectId: "proje-id",
storageBucket: "proje-id.appspot.com",
messagingSenderId: "SENDER-ID",
appId: "APP-ID",
};
firebase.initializeApp(firebaseConfig);
API anahtarlarını doğru şekilde yapılandırmak, uygulamanızın Firebase hizmetlerine düzgün erişmesini sağlar.
5. Kullanıcı Yetkilerini Test Etmek
Eğer her şey doğru görünüyor ama hala hata alıyorsanız, Firebase Authentication ve Firestore/Realtime Database'te kullanıcı yetkilerini test etmek faydalı olabilir. Test modunda kullanıcıların erişim haklarını kontrol edin ve hatayı daha hızlı bulmak için loglama yapın.
// Kullanıcı yetkilerini test etme
firebase.firestore().collection("users").doc(userId).get()
.then((doc) => {
if (doc.exists) {
console.log("Veri:", doc.data());
} else {
console.log("Veri bulunamadı");
}
})
.catch((error) => {
console.log("Hata:", error.message);
});
Bu tür loglar, hatanın kaynağını daha hızlı bulmanıza yardımcı olabilir.
Sonuç
FirebaseError: Missing or Insufficient Permissions hatası, çoğu zaman güvenlik kuralları, kullanıcı kimlik doğrulaması veya API anahtarlarının yanlış yapılandırılmasından kaynaklanır. Ancak endişelenmeyin! Yukarıda verdiğimiz adımları takip ederek bu hatayı kolayca çözebilirsiniz.
Unutmayın, doğru güvenlik kurallarını ve doğru yapılandırmayı sağlamak, Firebase projelerinizin sağlıklı çalışması için çok önemlidir. Her şey yolunda giderse, hatasız ve güvenli bir uygulama sizi bekliyor olacak!