谷歌云存储访问被allAuthenticatedUsers拒绝

时间:2019-08-05 09:28:07

标签: reactjs google-cloud-functions google-cloud-storage

我使用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>

如何正确访问?

1 个答案:

答案 0 :(得分:0)

您的请求未通过身份验证,您是匿名的。确保您拥有Google帐户(电子邮件,服务帐户等)。

您的用户必须是Google(或Cloud Identity),才能被视为已知/已认证。 使用firebase auth,您的用户可以被外部服务(Facebook,Github等)识别并进行身份验证,但GCS仅信任Google身份验证帐户。

一种解决方案是为您的后端创建服务帐户。为GCS Bucket提供对此服务帐户的访问权限,并通过后端向用户提供文件。