Firebase存储getDownloadUrl的令牌有效性

bum*_*een 12 firebase firebase-storage

当使用FirebaseStorage的getDownloadUrl时,我对url(&token =)中的"token"有疑问.

https://firebasestorage.googleapis.com/v0/b/someapplication.appspot.com/o/images%2Fsample.png?alt=media&token=123456

从文档中可以看出,它返回了一个"长期存在"的下载网址 https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL

问题是,我将fireUrl保存在FirebaseDatabase中

-chatroom
  - c1
    - m1
      -message: "Sent a photo"
      -photoUrl: downloadUrl here
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它不是终身令牌,所以在某个时间点,令牌将无效.因此,当我在ImageView中显示此URL时,它将不会加载图像.

Picasso.with(context)
  .load(downloadUrl)
  .into(imageView)
Run Code Online (Sandbox Code Playgroud)

我明白我可以在firebase中使用这样的东西来生成一个新的.

StorageReference sr = getReferenceFromUrl(downloadUrl)
//pseudo-code
sr.getDownloadUrl().addOnSuccessListener((Uri newUri) => {
  Picasso.with(context)
  .load(newUri)
  .into(imageView)
});
Run Code Online (Sandbox Code Playgroud)

但!此过程总是会在此过程中获得新的下载URL.

那么,令牌会持续多久?此外,如果它不是生命周期令牌,我们应该如何正确存储下载URL?

Fra*_*len 12

Firebase存储令牌不会过期.

它们可能会从Firebase控制台中撤消,这会使基于它们的URL无效.

  • 好的,现在我很困惑.@FrankvanPuffelen,如果没有我从控制台撤消令牌,downloadURL是否会过期?如果是真的话,马特的情况非常可怕. (3认同)
  • 这似乎不对。我使用了从 `put()` 返回的任务中提供的 firebase storage web API 的下载 URL。(文档在此处 https://firebase.google.com/docs/storage/web/upload-files 下监控上传进度)。没有提到过期,但现在几个月后我的下载链接解析为这个 XML:`<Error><Code>ExpiredToken</Code><Message>提供的令牌已过期。</Message><Details>Request has过期:1511581939</Details></Error>` (2认同)
  • 请参阅构建 firebase 存储的人的这个答案(https://github.com/googleapis/nodejs-storage/issues/244#issuecomment-405661688) (2认同)