Firebase Storage getDownloadUrl的令牌有效期

33

使用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

问题是,我要把下载链接存储在FirebaseDatabase中,如下:

-chatroom
  - c1
    - m1
      -message: "Sent a photo"
      -photoUrl: downloadUrl here

据我所了解,这不是终身令牌,因此在某个时间点上,该令牌将变得无效。 因此,当我在ImageView中显示此URL时,例如,它将无法加载图像。

Picasso.with(context)
  .load(downloadUrl)
  .into(imageView)

我知道我可以在Firebase中使用类似这样的内容来生成一个新的。

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

但是!这个过程的缺点是在整个过程中需要不断获取新的下载网址。

那么,这个令牌能存活多久呢?而且如果它不是永久性令牌,我们应该如何正确地存储下载网址?

1个回答

46

Firebase Storage 的令牌不会过期。

它们可以从 Firebase 控制台中吊销,这将使基于它们的 URL 无效。


有人知道在哪里可以找到说明吗?我找不到任何资料。下载图像的官方文档没有提到任何内容,这可能是好消息。 - Martavis P.
2
这看起来不对。我使用了从 put() 返回的任务中提供的 Firebase 存储 Web API 的下载 URL。(文档在此处 https://firebase.google.com/docs/storage/web/upload-files under Monitor Upload Progress)。没有提到过期,但是现在几个月后我的下载链接解析为这个 XML: <Error><Code>ExpiredToken</Code><Message>The provided token has expired.</Message><Details>Request has expired: 1511581939</Details></Error> - matth
这很可能意味着您的令牌已被撤销。 - Frank van Puffelen
17
好的,现在我有点困惑了。@FrankvanPuffelen,如果我没有从控制台撤销令牌,下载链接是否会过期?如果matth所说的是真的,那么情况就很吓人了。 - Nani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接