【问题标题】:How to enable "Share publicly" when uploading a file to Firebase storage?将文件上传到 Firebase 存储时如何启用“公开共享”?
【发布时间】:2016-10-09 10:39:37
【问题描述】:

Firebase 存储使用 Google Cloud Platform 进行存储。 GCP 允许文件上的“公开共享”选项能够在浏览器中查看此类文件。

这里是GCP documentation on this topic

您可以在此处通过 GCP 控制台上的 GUI 查看可用的选项。

通过 Firebase 上传文件时是否可以启用公共选项?

编辑:我已经启用了对整个存储桶的公开阅读,尽管它并不理想。

gsutil defacl ch -u allUsers:R gs://<bucket>

【问题讨论】:

    标签: javascript firebase firebase-storage


    【解决方案1】:

    使用 Firebase 存储,您可以使用两个 URL 来表示文件:

    // "Private" internal URL, only accessible through Firebase Storage API
    // This is protected by Firebase Storage Security Rules & Firebase Auth
    gs://bucket/object
    
    // "Public" unguessable URL, accessible by anyone with the link
    // This is secured because that token is *very* hard for someone to guess
    https://firebasestorage.googleapis.com/v0/bucket/object?alt=media&token=<token>
    

    第二个选项允许您与受信任的个人共享此公开但无法猜测的 URL,并允许他们在未经 Firebase 身份验证或使用您的应用的情况下访问内容 - 想想与 Google 相册共享家庭照片。除非您希望使用干净的 URL 公开共享,否则这种行为可能已经足够了。

    正如您所提到的,第三个选项涉及直接访问 Google Cloud Storage 控制台并使用干净的 URL 公开文件,而 Firebase Storage 客户端无法使用该 URL。这将添加第三个 URL:

    // "Public" clean URL, accessible and guessable
    // Not secure, typically used for public, static content
    https://storage.googleapis.com/v0/bucket/object
    

    一般来说,除非您想让人们知道和猜测您的内容(托管静态内容、网站文件等),否则我不会通过 GCS 公开分享,而且几乎肯定不会去至于将默认 ACL 设置为始终公开(如果您添加新功能并且不再需要此行为会发生什么情况,您可能会忘记再次将其关闭...)。

    【讨论】:

    • 所以您的回答是您不能使用 Firebase 将文件设置为公开?会话 URL 的一个问题是,如果文件是 HTML,它将不会显示它的图像和 CSS 文件。
    • 我的回答是 #2 是公开的,可以放在 img 标签中或作为 CSS 源导入没问题。 &lt;img src="https://firebasestorage.googleapis.com/v0/bucket/object?alt=media&amp;token=&lt;token&gt;"&gt; 完全有效且有效(如果您不相信我,请参阅 github.com/mcdonamp/flaming-specs/blob/master/index.html#L59 ;)
    • #2 可以在任何可以使用#3 的地方使用,但具有与之相关的额外安全性。 #3 的好处是,如果您将文件用作静态资产并希望有一个干净的 URL;否则,我会推动只使用#2。
    • 问题是你是否可以使用 Firebase 启用 GCP 的公共标志...
    • 如果你想在 #3 中使用干净的 URL,你必须去 GCP 启用它,Firebase 不允许你直接从我们的控制台启用它。
    猜你喜欢
    • 2019-12-02
    • 2016-03-18
    • 2017-03-26
    • 2021-08-12
    • 2020-04-08
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多