使用FirebaseStorage的getDownloadUrl时,关于URL中的"token"(&token=)有个问题。
从文档中可以看到,它返回一个“长期有效”的下载链接。 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)
});
但是!这个过程的缺点是在整个过程中需要不断获取新的下载网址。
那么,这个令牌能存活多久呢?而且如果它不是永久性令牌,我们应该如何正确地存储下载网址?
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