Mi proyecto usa la autenticación y el almacenamiento de Firebase, y está construido con React JS.
Tengo un archivo que está en el depósito de almacenamiento en:
gs://myproject.appspot.com/myfolder/fileIdLa URL de descarga con token es:
https://firebasestorage.googleapis.com/v0/b/myproject.appspot.com/o/myfolder%2FfileId?alt=media&token=myTokenQuiero poder descargar el archivo en mi aplicación, por lo que tengo la siguiente función dentro de la clase Firebase:
doDownloadFile = (path: string) => { app .storage() .ref() .child(path) .getDownloadURL() .then((url) => { console.log(url); }) .catch((error) => { console.log('Error: ', error); }); };(en este momento solo obtengo la URL, no la descargo).
El valor de la ruta es la URL de descarga como se indicó anteriormente (lo verifiqué al iniciar sesión en la parte superior de la función doDownloadFile, y se pasa ok).
Cuando ejecuto este código, me sale el siguiente error:
Firebase Storage: User does not have permission to access 'https:/firebasestorage.googleapis.com/v0/b/myproject.appspot.com/o/myfolder%2FfileId?alt=media&token=myToken'. (storage/unauthorized)Buscando en Google encontré 2 soluciones generales para esto, pero ninguna me ha funcionado.
El primero es establecer las reglas de seguridad en el almacenamiento en Firebase console. He configurado esto para:
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth!=null; } } }La segunda es agregar el usuario firebase-storage@system.gserviceaccount.com como administrador de almacenamiento en la consola de GCP. Esto se ha hecho.
Sin embargo, ninguno de estos ha hecho ninguna diferencia. Sigo teniendo el mismo error.
¿Dónde me estoy equivocando?