Estoy trabajando en mi primer proyecto ReactJS y estoy tratando de cargar una imagen en Firebase, pero cada vez que intento cargarla, recibo una notificación en el navegador "Almacenamiento de Firebase: el usuario no tiene permiso para acceder a 'images/${image.name }'. (almacenamiento/no autorizado)" sin embargo, inicié sesión con la autenticación de base de fuego. Cualquier ayuda será apreciada
Mi configuración de base de fuego es
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth != null; } } }funcion para subir
const handleUpload = () => { const uploadTask = storage.ref(`images/${image.name}`).put(image); uploadTask.on( "state_changed", (snapshot) => { const progress = Math.round( (snapshot.bytesTransferred / snapshot.totalBytes * 100) ); setProgress(progress); }, (error) => { console.log(error); alert(error.message); }, () => { storage .ref("images") .child(image.name) .getDownloadURL() .then(url => { db.collection("posts").add({ timestamp: firebase.firestore.FieldValue.serverTimestamp(), caption: caption, imageUrl: url, username: username }); setProgress(0); setCaption("") setImage(null); }) } ) }Esta es mi función de base de fuego
import firebase from 'firebase/compat'; import 'firebase/compat/auth'; import 'firebase/compat/firestore'; import 'firebase/compat/storage'; const firebaseConfig = { // Have the firebase config here apiKey: "XXXXXX", authDomain: "XXXX", databaseURL: "XXXX", projectId: "XXX", storageBucket: "XXX", messagingSenderId: "XXX", appId: "1:XX:X" }; // Use this to initialize the firebase App const firebaseApp = firebase.initializeApp(firebaseConfig); // Use these for db & auth const db = firebaseApp.firestore(); const auth = firebase.auth(); const storage = firebase.storage(); export { auth, db, storage };Las reglas que publicaste anteriormente son reglas de Cloud Firestore . No las reglas de almacenamiento de firebase .
Las reglas de almacenamiento de Firebase deberían tener este aspecto:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }Esto permitiría sólo el acceso autenticado.
Para ver las reglas de almacenamiento de Firebase: Almacenamiento -> Reglas.