使用java库访问谷歌云存储获取'403禁止'

Deo*_*ung 6 java scala google-authentication google-cloud-storage

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

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
Run Code Online (Sandbox Code Playgroud)

但是我得到了

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}
Run Code Online (Sandbox Code Playgroud)

我的电子邮件帐户可以访问存储桶,我也可以通过在我的帐户中创建项目来使用gsutil访问它.我在我的帐户中的项目中创建了xxx@developer.gserviceaccount.com,知道如何设置权限?

Ser*_*hia 3

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