我之前问过一个问题,想从firebase存储中获取下载url,得到的答案是:
bucket.file(filename).getSignedUrl({
action: 'read',
expires: '03-17-2025'
}, function(err, url) {
if (err) {
console.error(err);
return;
}
// The file is now available to read from this URL.
request(url, function(err, resp) {
// resp.statusCode = 200
});
});
当我使用glide下载图像或使用exoplayer重新生成音频或视频文件时,前一个代码给出的那个不起作用。
不过,当文件上传时,我得到的url与firebase存储器给出的url完全不同(wich对glide和exoplayer有效),wich如下所示:
https://firebasestorage.googleapis.com/v0/b/project-PROYECT_NUMBER.appspot.com/o/Messages%2Fimages%2F-KUj4wvXXl6aj9XXXX%2F1493147111111?alt=media&token=TOKEN
我怎样才能得到正确的下载url,就像在服务器端使用android或ios sdk一样?
最佳答案
使用android、ios或javascript sdk时,无法在服务器端获得下载url。必须通过调用getSignedURL()生成URL。
您可能需要检查是否有权在给定的url读取文件。
默认情况下,您必须经过身份验证。
在firebase控制台中检查存储规则
https://firebase.google.com/docs/storage/security/#authorization