достъп до облачното хранилище на Google с помощта на библиотеката на Java получава „403 забранено“

Опитвам се да използвам Java библиотека за съхранение в облака на Google в scala, за да изброявам елементи в кофа

val credential = new GoogleCredential.Builder()
  .setTransport(GoogleNetHttpTransport.newTrustedTransport())
  .setJsonFactory(JacksonFactory.getDefaultInstance())
  .setServiceAccountId("[email protected]")
  .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, като създам проект и в моя акаунт. Също така създадох [email protected] в проект в моя акаунт, някаква идея как мога да задам разрешението?


person Deo Leung    schedule 10.09.2014    source източник


Отговори (2)


Току-що се сблъсках със същия проблем и мисля, че намерихме решението. За да го коригира, собственикът на Google Play Developer Console, до който се опитвахме да осъществим достъп, трябваше да добави имейл адреса на нашия сервизен акаунт към списъка с разрешения на Google Play Console и да даде на сервизния акаунт права за финансови отчети.

person Serenthia    schedule 01.10.2014
comment
Това решение е несигурно! Всеки може да направи обратно инженерство на APK и да получи вашия P12 ключ. Вашият акаунт в Google Could Storage може да бъде компрометиран. Ето въпроса без отговор, който зададох, тъй като и аз търся решение! stackoverflow.com/q/28001476/3216207 - person Oru; 19.01.2015

Ако правите това от екземпляр на Google Compute Engine, уверете се, че стартирате този екземпляр с разрешени разрешения за акаунти за услуги... вижте https://cloud.google.com/compute/docs/authentication#using

Ако не стартирате екземпляра със сервизен акаунт, той няма да има разрешения да го използва.

person jyoung    schedule 28.02.2015