2014-09-10 127 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