我有一个云函数,它将为上传到Firebase存储的图像生成签名网址,并能够生成签名网址。
当我尝试通过浏览器从该 URL 访问图像时,下面是我收到的错误消息。
url : https://storage.googleapis.com/mango-b715d.appspot.com/thumb_ESP_014033_1910_desktop.jpg?GoogleAccessId=firebase-adminsdk-lar4y@mango-b715d.iam.gserviceaccount.com
错误信息:
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>
Anonymous caller does not have storage.objects.get access to mango-b715d.appspot.com/thumb_ESP_014033_1910_desktop.jpg.
</Details>
</Error>
有人可以解释我,如何解决此错误,我的主要目的是将该图像下载到Android应用程序中到外部卡。
有人可以指导我.
想要添加更多信息。
完整的签名网址
https://storage.googleapis.com/mango-b715d.appspot.com/ESP_014033_1910_desktop.jpg?GoogleAccessId=firebase-adminsdk-lar4y@mango-b715d.iam.gserviceaccount.com&Expires=13575340800&Signature=ayF424C3Fd04XLF82GeREn72wvl0Cox9cB%2BrSPK6wohEP1taXb7yMeW%2Fe6QRirpn%2BSM3HaU2CGRhi6Ae5RmJL8lYKPa%2BGOUhiWG6MxVsInoE0SbvkZeW0fIVdsVyGFIcQkFQeeiaBBm5E239TfAPP8P%2F%2BemcVQ8oiOCKac8uOIb4S4aIQfFBhkuWHNf2U8g4%2B9VxWTrAkRbYN5wuVc78mZmmuKi6q%2BT1IMB5nWnO3z4x893%2FyalzBEtT3uWRibesBspKLEJkoBn1dU7bYi0XuyZ6GByJesJMmGjZvq99hcI%2FgQ7kutGHcLS5HJ%2Bw9UZwwgNqMFlF%2BoS7WQg7Eu68tQ%3D%3D
在 URL 上方访问时出现错误消息。
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
</Message>
<StringToSign>
GET 13575340800 /mango-b715d.appspot.com/ESP_014033_1910_desktop.jpg
</StringToSign>
您当前的存储规则可能具有以下功能:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
您可以在 Firebase 控制台的"Storage > Rules.
下查看它们
这意味着您的用户应经过身份验证才能在存储中读取或写入。
如果要允许每个人在没有身份验证的情况下访问资源,可以在 Authentication > Sign-In Method
中启用此功能并启用 Anonymous
。
在此之前,请考虑以下事项:
"我的主要目的是将该图像下载到Android应用程序中 外部卡。
也许您应该只使用 Google 登录方法,让您的用户在应用中进行身份验证。看https://firebase.google.com/docs/auth/android/google-signin?hl=es-419
尽管我的 Firebase 存储规则用于读取
allow read: if true;
奇怪的是,云存储控制台仍然将存储桶显示为"非公共"。更改它以提供公共访问权限解决了我的问题。
- 在 Google Cloud Platform Console 中開啟 Cloud Storage 瀏覽器。
- 在存储桶列表中,单击要公开的存储桶的名称。选择页面顶部附近的"权限"选项卡。
- 单击添加成员按钮。
- 此时将显示"添加成员"对话框。
- 在 新成员 字段中,输入所有用户。
- 在角色下拉列表中,选择存储子菜单,然后单击 存储对象查看器选项。
从 - https://cloud.google.com/storage/docs/access-control/making-data-public 复制的步骤