Firebase存储:无法下载通过Ruby API上传的文件

时间:2018-04-25 23:47:59

标签: ruby-on-rails ruby firebase google-cloud-storage firebase-storage

我使用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应用程序上传的那些。

有什么想法?我认为必须将acl的{​​{1}}属性设置为file。但是,不确定为什么会阻止从控制台下载文件。好像我可以使用他们的public_read来访问文件。

1 个答案:

答案 0 :(得分:0)

您是否更改了存储规则?在Firebase控制台(Web)中输入存储和之后的规则并查看规则。

如果你有这个:

allow read: if request.auth != null;

表示应该对用户进行身份验证以读取文件。

将此用于更多安全规则实践。