Firebase storage: невозможно загрузить файлы, загруженные через Ruby API - PullRequest
0 голосов
/ 26 апреля 2018

Я использую сервис google-cloud-storage для загрузки и загрузки файлов из моего приложения Ruby on Rails в хранилище Firebase (часть другого приложения, с которым я взаимодействую).

Загрузка работает отлично, используя ключ JSON из раздела учетных записей службы Firebase.Я загружаю файлы следующим образом:

STORAGE = Google::Cloud::Storage.new(
    project_id: "blah",
    credentials: File.join(Rails.root, 'config', 'firebase-auth.json')
)

BUCKET = STORAGE.bucket DEFAULT_BUCKET_ID

...

file_on_firebase = BUCKET.create_file(file_path.to_s, firebase_path, acl: "public_read")

Я вижу загруженные файлы в консоли хранения Firebase, но при попытке загрузить их через консоль я получаю следующую ошибку в консоли моего браузера:

uncaught exception: CustomError: Error in protected function: Firebase Storage: 
User is not authenticated, please authenticate using Firebase Authentication and try again.

Это странно, поскольку учетная запись, к которой у меня есть доступ к консоли Firebase, является основной служебной учетной записью, и я могу без проблем загружать другие (загруженные вручную) файлы.У меня возникают проблемы с загрузкой, только те, которые загружены из моего приложения Rails.

Есть мысли?Я думаю, что это должно быть связано с установкой атрибута acl для file в public_read.Однако не уверен, почему это помешает загрузке файла из консоли.Кажется, что я могу получить доступ к файлам ОК, используя их public_url.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы изменили свои правила хранения?Войдите в «Хранилище» и «После» в Firebase Console (web) и посмотрите ваши правила.

Если у вас есть это:

allow read: if request.auth != null;

Означает, что пользователи должны пройти проверку подлинности для чтения файла.

Используйте это для большей практики правил безопасности.

...