我使用Reactjs创建一个网站并将其托管在Firebase上,并在Google Cloud Functions上将serviceAccount.json
设置为firebase-admin
和@google-cloud/storage
来处理函数。网站有一个<iframe>
元素,它将从Google Cloud Storage的存储桶中加载aaa.html
的链接URL。 GCS的存储桶设置为allAuthenticatedUsers
。使用aaa.html
上传predefinedAcl:'authenticatedRead'
。网站可以使用firebaseui-web-react
登录。加载aaa.html
时,访问只会被拒绝。
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>
Anonymous caller does not have storage.objects.get access to
bucket/path/aaa.html.
</Details>
</Error>
如何正确访问?
答案 0 :(得分:0)
您的请求未通过身份验证,您是匿名的。确保您拥有Google帐户(电子邮件,服务帐户等)。
您的用户必须是Google(或Cloud Identity),才能被视为已知/已认证。 使用firebase auth,您的用户可以被外部服务(Facebook,Github等)识别并进行身份验证,但GCS仅信任Google身份验证帐户。
一种解决方案是为您的后端创建服务帐户。为GCS Bucket提供对此服务帐户的访问权限,并通过后端向用户提供文件。