2017-06-20 10 views
2

J'ai une application iOS/Swift assez basique qui télécharge des fichiers vidéo sur Firebase. Bien que j'ai trouvé d'autres messages sur les erreurs 403, ils semblaient tous être des problèmes d'autorisations systémiques.Firebase lance 403 "Autorisation refusée" au hasard sur certains fichiers (iOS/Swift)

Je publie ce thread car 99% du temps le fichier télécharge et obtient les autorisations comme prévu. Je n'ai pas de paramètres d'autorisation fantaisie (ou quelconque) dans l'application ou la base de données, mais parfois, un fichier renvoie 403.

Juste pour m'assurer que je ne poursuivais pas ma queue, j'ai changé mes règles (basées sur https://groups.google.com/forum/#!topic/firebase-talk/oXyspJwlgU0) pour autorisations complètes "true". Toujours obtenir 403 pour ce fichier spécifique.

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

J'ai un pressentiment, peut-être quelque chose va mal quand un fichier est pas téléchargé tout le chemin. D'une certaine manière, il devient corrompu, mais jette un 403 à la place? (Poignarder dans le noir bien sûr).

Des idées ou des problèmes similaires là-bas?

Répondre

1

Peut-être avez-vous résolu ce problème, mais je veux partager ce que j'ai trouvé en essayant de résoudre un cas similaire.

J'écris une application hybride qui utilise Firebase Storage pour télécharger et télécharger des fichiers. À des fins de test, je n'utilisais pas l'authentification et tout fonctionnait correctement. Ensuite, j'ai implémenté l'authentification, les règles de base de données et les règles de stockage et tout a bien fonctionné avec la base de données mais pas avec Storage. Avec les règles de stockage:

service firebase.storage { 
    match /b/....myBucket.../o { 
    match /{allPaths=**} { 
     allow read, write: if request.auth != null 
    } 
    } 
} 

J'ai toujours reçu 403 « Autorisation refusée » des messages en réponse à la fonction getDownloadURL(), les fichiers chargés jamais. J'ai essayé l'authentification anonyme et email/mot de passe, rien ne s'est passé. Ensuite, j'ai essayé quelques variations sur les règles, mais dans le meilleur des cas, j'ai reçu des messages 403 "permission denied", parfois un fichier serait chargé, parfois non.

J'ai finalement résolu le problème. J'utilisais les fonctions d'authentification d'AngularFire: $ firebaseAuth(), $ authAnonymously() et $ authWithPassword(), mais pour le stockage j'utilisais la fonction standard firebase.storage(). Ensuite, j'ai changé Auth aux fonctions standard: firebase.auth(), signInAnonymously() et signInWithEmailAndPassword(), et tous les téléchargements et téléchargements ont commencé à fonctionner correctement.

Espérons que cela aide quelqu'un.