2014-09-10 132 views
6

我尝试使用谷歌云存储Java库Scala中列出的水桶访问谷歌云存储变得“403禁止”

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],任何想法,我该如何设置权限?

回答

3

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

+0

此解决方案不安全!任何人都可以对APK进行反向工程并获得您的P12密钥。您的Google可能存储帐户可能会遭到入侵。这是我提出的未解答的问题,因为我也在寻找解决方案! http://stackoverflow.com/q/28001476/3216207 – Oru 2015-01-19 20:07:13