我使用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
来访问文件。
答案 0 :(得分:0)
您是否更改了存储规则?在Firebase控制台(Web)中输入存储和之后的规则并查看规则。
如果你有这个:
allow read: if request.auth != null;
表示应该对用户进行身份验证以读取文件。
将此用于更多安全规则实践。