【发布时间】:2018-10-06 13:17:16
【问题描述】:
我正在使用 google-cloud-storage 服务将文件从我的 Ruby on Rails 应用上传和下载到 Firebase 存储(我正在与之交互的另一个应用的一部分)。
使用 Firebase 服务帐户部分中的 JSON 密钥,上传工作完美。我正在上传这样的文件:
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 应用程序上传的那些。
有什么想法吗?我认为它必须与将file 的acl 属性设置为public_read 有关。但是,不确定为什么会阻止从控制台下载文件。看来我可以使用他们的public_url 访问文件。
【问题讨论】:
-
我做了一些快速检查,我唯一能想到的可能是该用户由于某种原因对该特定存储桶/文件夹没有正确的 IAM 权限。你检查过这些吗?
-
我用于登录 Firebase 控制台的帐户被标记为项目的“所有者”。但是,它没有标记为服务帐户。也许这就是问题所在?
标签: ruby-on-rails ruby firebase google-cloud-storage firebase-storage