我在用Next。js和我努力让firebase存储图像呈现在屏幕上,因为他们不断回来作为403错误。
我上传一个图像到存储器时,添加一个文档到FireStore,里面嵌套了一个URL,然后使用该URL来获取图像
这是我的下一个图像标签与食谱。main_image.url == https://storage.googleapis.com/example.com/recipes/0O3Oycow4lJvyhDbwN0j/main_image/190524-classic-american-cheeseburger-ew-207p.png
和recipe.main_ www.example.com == firebase存储中照片的名称。
<Image
alt={recipe.main_image.name}
src={recipe.main_image.url}
width={650}
height={650}
/>
alt标签回来作为正确的事情(图像名称在firebase存储),所以我知道图像被送回,但由于某种原因,我未经授权,我已经尝试了多种修复,包括改变firebase规则
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
和
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
但都没有改变结果,我也设置了我的下一个配置,所以我得到了Firebase存储
images: {
domains: ['images.ctfassets.net', 'storage.googleapis.com'],
},
1条答案
按热度按时间avkwfej41#
如果这些图像将提供给公众,那么我建议允许公众使用这些图像。Cloud Storage for Firebase由Google Cloud Storage提供支持。您可以使单个对象公开可读或使存储桶公开可读。
或者更好的方法是生成signed URLs,这样你就可以对一个对象进行有限时间的访问。如果你正在使用Javascript,那么你可以看看这个关于如何生成签名URL的示例代码。
您可以访问此documentation了解更多信息。