Правила эмулятора хранилища Firebase не работают

# #ios #firebase-storage #emulation #rules #firebase-tools

Вопрос:

Мое приложение работает просто отлично, но когда я использую эмуляторы Firebase, у меня возникает проблема с несоблюдением правил хранения. Я скачал storage.rules файл, и он находится в том же каталоге, firebase-json что и файл. Набор эмуляторов запускается просто отлично, и я вижу, что эмулятор хранилища работает. Однако, когда я пытаюсь загрузить изображение (как я делаю в живом приложении) Я получаю сообщение об ошибке.

Error while uploading file: Error Domain=FIRStorageErrorDomain Code=-13021 "User does not have permission to access gs://my-stuff-7796d.appspot.com/Profiles/0ye7psTQA4xR6DfjZRXjjtCWKyPw.jpg." UserInfo={object=Profiles/0ye7psTQA4xR6DfjZRXjjtCWKyPw.jpg, ResponseBody={"error":{"code":403,"message":"Permission denied. No WRITE permission."}}, bucket=my-stuff-7796d.appspot.com, data={length = 74, bytes = 0x7b226572 726f7222 3a7b2263 6f646522 ... 73696f6e 2e227d7d }, data_content_type=application/json; charset=utf-8, NSLocalizedDescription=User does not have permission to access gs://my-stuff-7796d.appspot.com/Profiles/0ye7psTQA4xR6DfjZRXjjtCWKyPw.jpg., ResponseErrorDomain=com.google.HTTPStatus, ResponseErrorCode=403}

Правила хранения.:

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

Опять же, работа против живой базы огня работает просто отлично, и правила соблюдаются.
Вот мой файл firebase.json

   "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "storage": {
    "rules": "storage.rules"
  },
  "emulators": {
    "auth": {
      "port": 9099
    },
    "firestore": {
      "port": 8080
    },
    "storage": {
      "port": 9199
    },
    "ui": {
      "enabled": true
    }
  }
}
 

Когда я запускаю свое приложение, это код, который я инициализирую после вызова FirebaseApp.configure

 Auth.auth().useEmulator(withHost:"localhost", port:9099)
Storage.storage().useEmulator(withHost:"localhost", port:9199)
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false
settings.isSSLEnabled = false
Firestore.firestore().settings = settings
 

Что я упускаю, или это ошибка?

Комментарии:

1. В дополнение к его проблеме, если я вручную добавлю изображение в хранилище в консоли эмулятора, я смогу читать из своего приложения. Приложение просто не будет загружать изображение, хотя это происходит в реальной среде. Если после успешной загрузки вручную и чтения изображения из приложения я попытаюсь загрузить новое изображение из приложения, загрузка завершится неудачно, но предыдущее, загруженное мной вручную, будет удалено.

2. Еще одно обновление. Я только что обновился до Firebase-tools 9.20.0, и теперь, когда я пытаюсь загрузить изображение, симуляторы просто выходят из строя. 🙁

3. В своем нынешнем состоянии эмулятор хранилища Firebase кажется несколько ненадежным. Подвержен авариям или ведет себя непредсказуемым образом.

4. Я подал сообщение об ошибке, и оно было проверено, поэтому жду обновления

5. @StewartLynch Не могли бы вы сослаться на сообщение об ошибке, которое вы подали, пожалуйста?