web-dev-qa-db-fra.com

Firebase Cloud Storage: autorisation refusée. Impossible d'effectuer cette opération firebase lors de la récupération de downloadURL

J'ai une fonction qui télécharge avec succès une image sur mon compartiment de stockage en nuage. 

Avec une autre fonction, je veux obtenir l'URL de l'image pour l'afficher sur ma page (avec <img.../>)

getImageUrl(id: string) {
    return this.storageRef.child('X/' + id ).getDownloadURL();

Mais quand je fais ça ... je reçois une URL 'invalide' et quand je la copie et que j'y vais, je reçois le message suivant:

{
  "error": {
    "code": 403,
    "message": "Permission denied. Could not perform this operation"
  }
}

J'ai lu quelque part que cela pourrait être parce qu'il n'y a pas de jeton attaché à l'URL, mais comment puis-je l'activer? 

4
Rafie

Ces derniers jours, j'ai essayé de comprendre les règles de Firebase Storage et je ne sais pas pourquoi mais lorsque je sépare les règles pour l'écriture et pour la lecture, par exemple:

allow write: if request.auth != null && request.resource.size < 3 * 1024 * 1024;
allow read: if true;

le code fonctionne très bien et je peux écrire et lire en utilisant getDownloadURL (), mais quand je les utilise ensemble comme ceci: 

allow read, write: if request.auth != null && request.resource.size < 3 * 1024 * 1024;

J'ai la même erreur que toi:

{
  "error": {
  "code": 403,
  "message": "Permission denied. Could not perform this operation"
  }

}

Je peux écrire en les utilisant ensemble, mais lorsque j'essaie de lire le fichier à l'aide de getDownloadURL (), le problème apparaît. Peut-être pourriez-vous essayer de séparer les règles que je mentionne et voir si cela fonctionne. J'espère que cela résoudra votre problème. De plus, n'oubliez pas que les règles sont en vigueur 5 minutes après le moment où vous les avez définies. Bonne chance. 

2
Danilo_1289

Vous devez définir des règles de sécurité du stockage, en savoir plus à ce sujet ici

2
Eldlabs

Vous devez utiliser la méthode getDownloadURL (). Cela vous fournira l'URL utilisée pour accéder à l'image réelle à télécharger ou à référencer dans votre propre code HTML.

Voir la documentation de référence ci-dessous:

https://firebase.google.com/docs/storage/web/download-files#download_data_via_url

0
DancingDad

Vous devez utiliser la méthode getDownloadURL. Cela vous permettra d'obtenir l'URL nécessaire pour télécharger l'image ou pour référence dans votre propre code HTML. 

Voir la documentation de référence ci-dessous:

https://firebase.google.com/docs/storage/web/download-files#download_data_via_url

0
DancingDad