доступ к облачному хранилищу 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, к которой мы пытались получить доступ, должен был добавить адрес электронной почты нашей учетной записи службы в список разрешений консоли Google Play и предоставить учетной записи службы права на создание финансовых отчетов.

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