当前位置: 首页 > 知识库问答 >
问题:

使用java库访问google云存储获得“403禁止”

申辉
2023-03-14

我正在尝试使用scala中的google云存储java库来列出bucket中的项目

val credential = new GoogleCredential.Builder()
  .setTransport(GoogleNetHttpTransport.newTrustedTransport())
  .setJsonFactory(JacksonFactory.getDefaultInstance())
  .setServiceAccountId("xxx@developer.gserviceaccount.com")
  .setServiceAccountScopes(Collections.singleton(StorageScopes.DEVSTORAGE_READ_ONLY))
  .setServiceAccountPrivateKeyFromP12File(new File("file.p12"))
  .build()
val storage = new Storage.Builder(
  GoogleNetHttpTransport.newTrustedTransport(),
  JacksonFactory.getDefaultInstance(),
  credential)
  .setHttpRequestInitializer(credential)
  .setApplicationName("app")
  .build()
storage.objects.list("bucket").execute

然而我得到了

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}

我的电子邮件帐户可以访问桶,我可以通过在我的帐户中创建一个项目来使用gsutil访问它。我已经在我的帐户中的项目中创建了xxx@developer.gserviceaccount.com,有什么想法可以设置权限吗?

共有2个答案

潘英豪
2023-03-14

如果您是从Google Compute Engine实例执行此操作,请确保在启用服务帐户权限的情况下启动该实例。。。看见https://cloud.google.com/compute/docs/authentication#using

如果您不使用服务帐户启动实例,它将没有使用服务帐户的权限。

狄天逸
2023-03-14

刚刚遇到了同样的问题,并且认为我们已经找到了解决方案。为了解决这个问题,我们试图访问的Google Play开发者控制台的所有者必须将我们的服务帐户电子邮件地址添加到Google Play控制台权限列表中,并授予服务帐户财务报告权限。

 类似资料:
  • 我想从Google Play Analytics获取数据,它存储在Google云存储中。经过研究,洛特发现,并没有直接的API来获取谷歌播放分析报告数据。因此,我找到了通过GoogleAPI客户端PHP库链接访问GooglePlay帐户报告的方法,并遵循了给定的方法。我已经创建了服务帐户,授予了所有者权限,并启用了谷歌云api。 在链接中显示的代码中,如果我使用var_dump($bucket),

  • 我有一个使用Firebase身份验证的node.js客户端。现在我想访问谷歌云存储,但是node.js的Firebase SDK不包括GCS。使用@google-云/存储工作,但只有匿名访问。如何将Firebase凭据应用到@google-Cloud/存储,以便在登录用户的上下文中访问GCS?

  • 问题内容: 我无法在Google Container Engine中使用“应用程序默认凭据”。这些文档说,它们是为App Engine和Compute Engine设计的,但是有人告诉我,它们应该透明地传递给在Container Engine上运行的容器。 这是失败的代码: 失败的错误: 期望Application Default Credentials与Container Engine一起使用是

  • 我在我创建的谷歌云存储上有一个存储桶。我想测试一些内置ACL,如public read、public read write等。但是,一旦我使用gsutil setacl命令更改了ACL,例如:

  • 我正在开发一个web应用程序,作为与Google云存储(GCS)的接口。 我正在使用后端服务来检索我存储在GCS上的文件列表及其使用JSON API的URL,并将其返回到我的Web应用程序。然而,我真的无法通过这些URL加载文件,总是返回403禁止。 我不确定GCS身份验证在幕后是如何工作的,也不确定是否可以直接授予对网络应用程序的访问权限。我不确定如何通过超文本传输协议请求附加应用程序鉴别信息。