我应该捆绑哪些 Google 云服务来为我的桌面应用程序添加在线存储支持?

Which Google Cloud services should I bundle to add online storage support to my desktop application?

我正在编写一个 Electron 应用程序(使用 Angular 构建)并且我正在研究如何向我的桌面应用程序添加在线云存储支持?

用户应该能够...

  1. 登录他们的帐户
  2. 将upload/download自己的文件上传到网上storage/drive.

用户基本上应该能够登录到他们的帐户并通过应用上传和下载他们自己的文件。

问题 1

Firebase Authentication + Firestore Storage 的组合听起来像是满足此要求的合适解决方案吗?这两项服务是否有任何可能不适用于此的限制?

问题 2

我发布了一个相关但不同的问题

Firebase storage 对于用户生成的内容很有用。事实上,文档中的描述是这样说的,

Cloud Storage for Firebase is built for app developers who need to store and serve user-generated content, such as photos or videos.

您可以创建一个以用户的 UID 为键的文件夹来限制用户访问他们自己的文件:

service firebase.storage {
  match /b/{bucket}/o {
    match /users/{uid}/{files=**} {
      allow read, write: if request.auth != null && request.auth.uid == uid;
    }
  }
}

请注意,安全规则只会阻止用户自己下载文件 URL。如果用户 (UID123) 将他们的文件之一的 link 共享给其他人(可能未经身份验证),他们仍然可以访问查看该文件,因为他们现在拥有带有访问令牌的 URL。我也在 中解释过。

除非撤销令牌,否则这些下载 URL 永不过期。

如果您想防止 URL 被使用更长时间,您可以生成 signed URLs。任何人仍然可以使用这些来查看文件(如果用户共享它)但您可以设置签名的到期时间 URLs。