我正在本地开发和测试App Engine应用程序。我希望应用程序打印出Google云端存储项目中所有Bucket名称的列表。
部分代码:
Storage storage = StorageOptions.getDefaultInstance().getService();
Page<Bucket> buckets = storage.list(Storage.BucketListOption.pageSize(100));
Iterator<Bucket> bucketIterator = buckets.iterateAll();
while (bucketIterator.hasNext()) {
Bucket bucket = bucketIterator.next();
System.out.println("bucket name: " + bucket.getName());
}
要访问云端存储,我在这里使用google-cloud
Java库:http://googlecloudplatform.github.io/google-cloud-java/0.9.4/index.html
运行上述代码段会导致401 Unauthorized。
如上面链接中“它是什么?”部分所述,如果应用程序在App Engine或Compute Engine中运行,则验证是自动的。
由于我在本地运行,我认为自动身份验证不起作用(如果我错了请纠正我。)
要进行身份验证,我按照 身份验证 部分中列出的其中一个选项,在终端中发出命令gcloud auth application-default login
。
尝试访问云存储时,我不再获得未经授权的401,但请注意以下事项:
java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/example/.config/gcloud/active_config" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
AccessControlException
?