Hata Nedir?
Hata Nerelerde Karşımıza Çıkar?
Neden Olur?
2. Yanlış Yapılandırılmış Kurallar: Çoğu zaman, güvenlik kurallarının doğru yapılandırılmaması bu hatayı tetikler. Örneğin, okuma ve yazma işlemleri için izin vermek yerine, yanlışlıkla tüm işlemleri engelleyen kurallar yazabilirsiniz.
3. Kullanıcı Yetkileri: Veritabanına bağlanmaya çalışan kullanıcı, doğru yetkilere sahip olmayabilir. Firebase Authentication ile kullanıcı doğrulaması yapıyorsanız, kullanıcının yetkileri eksik olabilir.
Hatanın Çözümü
1. Firebase Güvenlik Kurallarını Kontrol Edin:
Firebase’in güvenlik kuralları veritabanınıza erişimi yönetir. Eğer bu kurallarda bir hata varsa, işlemleriniz reddedilir ve “Missing or insufficient permissions” hatası alırsınız.
İşte bir örnek Firebase güvenlik kuralı:
```json
{
"rules": {
".read": "auth != null", // Sadece oturum açmış kullanıcılar okuyabilir
".write": "auth != null" // Sadece oturum açmış kullanıcılar yazabilir
}
}
```
Bu kuralda, yalnızca oturum açmış kullanıcıların okuma ve yazma işlemi yapmasına izin verilir. Eğer kullanıcı oturum açmamışsa, bu hatayı alabilirsiniz.
Güvenlik kurallarınızın doğru olduğundan emin olun. Firebase Console üzerinden güvenlik kurallarını kontrol edebilir ve düzenleyebilirsiniz.
2. Doğru Erişim İzinlerini Verin:
Eğer Firestore veya Realtime Database kullanıyorsanız, yazma ve okuma işlemleri için kullanıcı izinlerini kontrol edin. İşte basit bir örnek, Firestore veritabanı için güvenlik kuralı:
```json
service cloud.firestore {
match /databases/{database}/documents {
match /{document=} {
allow read, write: if request.auth != null; // Yalnızca oturum açmış kullanıcılar erişebilir
}
}
}
```
Bu kurallar, yalnızca kimlik doğrulaması yapılmış kullanıcıların veritabanını okumasına veya yazmasına izin verir.
3. Firebase Authentication'ı Kontrol Edin:
Firebase Authentication kullanıyorsanız, kullanıcının doğrulama işlemi başarılı olduğundan emin olun. Eğer kullanıcı giriş yapmadıysa, yetkili bir şekilde erişim sağlayamaz.
Firebase Authentication işlemi şu şekilde yapılabilir:
```javascript
firebase.auth().signInWithEmailAndPassword(email, password)
.then((userCredential) => {
// Kullanıcı başarıyla giriş yaptı
var user = userCredential.user;
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode, errorMessage);
});
```
Kullanıcının giriş yaptıktan sonra, veritabanına erişmesi sağlanabilir.
4. Veritabanı Yapısını Kontrol Edin:
Veritabanında doğru referansı kullandığınızdan emin olun. Örneğin, Firestore’da belirli bir koleksiyona erişmeye çalışırken yanlış bir yol belirlemeniz de bu hataya yol açabilir.
Örnek bir Firestore veritabanı sorgusu:
```javascript
var db = firebase.firestore();
db.collection("users").get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.id, " => ", doc.data());
});
})
.catch((error) => {
console.log("Error getting documents: ", error);
});
```
Bu sorgunun çalışabilmesi için, "users" koleksiyonunun doğru güvenlik kurallarına sahip olması gerektiğini unutmayın.
Hata Sonrası Kontroller
- Güvenlik kurallarınız Firebase Console'da doğru şekilde güncellenmiş mi?
- Kullanıcı doğrulaması düzgün çalışıyor mu?
- Veritabanı yapınızda herhangi bir hata var mı?
Eğer bunlar da doğruysa, hata mesajını dikkatle okuyun ve başka bir şey eksik olup olmadığını tekrar gözden geçirin.