如何从独立java应用程序(而不是GAE web应用程序)连接到本地google云存储?

如何从独立java应用程序(而不是GAE web应用程序)连接到本地google云存储?,java,google-app-engine,google-cloud-storage,Java,Google App Engine,Google Cloud Storage,我有一个GAE应用程序,它在谷歌云数据存储中创建一些数据,并将一些二进制文件存储到谷歌云存储中——让我们称这个应用程序为WebApp。 现在我有一个不同的应用程序在谷歌计算引擎上运行。让我们调用应用程序ComputeApp ComputeApp是一个后端进程,处理由WebApp创建的数据。我以前在这里问过,我可以使用哪个API与ComputeApp中的存储进行通信。我使用的实现了存储通信 就我与谷歌云中的存储进行通信而言,一切正常。我正在使用服务帐户身份验证 现在我需要在我的开发PC上本地运行C

我有一个GAE应用程序,它在谷歌云数据存储中创建一些数据,并将一些二进制文件存储到谷歌云存储中——让我们称这个应用程序为WebApp。 现在我有一个不同的应用程序在谷歌计算引擎上运行。让我们调用应用程序ComputeApp

ComputeApp是一个后端进程,处理由WebApp创建的数据。我以前在这里问过,我可以使用哪个API与ComputeApp中的存储进行通信。我使用的实现了存储通信

就我与谷歌云中的存储进行通信而言,一切正常。我正在使用服务帐户身份验证

现在我需要在我的开发PC上本地运行ComputeApp,这样我就可以将本地WebApp创建的数据存储到本地调试存储中。我需要它,因为我想有一个测试环境,所以我可以调试本地应用程序。 我在本地运行的WebApp将二进制数据存储到本地数据存储。我可以通过本地管理控制台看到它:(localhost:8080/_ah/admin)。有一个实体列表GsFileInfo和一个“FakeCloudStorage”列表。。。实体,表示我的存储数据


我应该如何修改我的ComputeApp代码,强制它连接到本地调试存储
并访问这些本地存储的二进制数据,而不是连接到谷歌云?

在谷歌项目控制台中创建帐户和服务帐户凭据

初始化:

private static final String APPLICATION_NAME = "your-webapp";
      private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

       GoogleCredential credential = GoogleCredential.getApplicationDefault();
              if (credential.createScopedRequired()) {
                credential = credential.createScoped(StorageScopes.all());
              }
              HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
              storageService = new Storage.Builder(httpTransport, JSON_FACTORY, credential)
                  .setApplicationName(APPLICATION_NAME).build();



   InputStreamContent mediaContent = new InputStreamContent(contentType, inputStream);


    StorageObject objectMetadata = null;
      objectMetadata = new StorageObject()
          .setName(name)
          .setMetadata(ImmutableMap.of("date", new Date().toString()))
          .setAcl(ImmutableList.of(
             new ObjectAccessControl().setEntity("allUsers").setRole("READER")

              ))
          .setContentDisposition("attachment");


    Storage.Objects.Insert insertObject = storageService.objects().insert("staging.your-app.appspot.com", objectMetadata,
        mediaContent);


    // For small files, you may wish to call setDirectUploadEnabled(true), to
    // reduce the number of HTTP requests made to the server.
    if (mediaContent.getLength() > 0 && mediaContent.getLength() <= 2 * 1000 * 1000 /* 2MB */) {
      insertObject.getMediaHttpUploader().setDirectUploadEnabled(true);
    }

    insertObject.execute();
私有静态最终字符串应用程序\u NAME=“您的webapp”;
私有静态最终JsonFactory JSON_FACTORY=JacksonFactory.getDefaultInstance();
GoogleCredential credential=GoogleCredential.getApplicationDefault();
if(credential.createScopedRequired()){
credential=credential.createScope(StorageScopes.all());
}
HttpTransport HttpTransport=GoogleNetHttpTransport.newTrustedTransport();
storageService=new Storage.Builder(httpTransport、JSON\u工厂、凭证)
.setApplicationName(应用程序名称).build();
InputStreamContent mediaContent=新的InputStreamContent(contentType,inputStream);
StorageObject objectMetadata=null;
objectMetadata=新的StorageObject()
.setName(名称)
.setMetadata(ImmutableMap.of(“日期”,new date().toString()))
.setAcl(不可修改的列表)(
新建ObjectAccessControl().setEntity(“allUsers”).setRole(“READER”)
))
.setContentDisposition(“附件”);
Storage.Objects.Insert insertObject=storageService.Objects().Insert(“staging.your app.appspot.com”,objectMetadata,
媒体内容);
//对于小文件,您可能希望调用setDirectUploadEnabled(true),以
//减少向服务器发出的HTTP请求数。

如果(mediaContent.getLength()>0&&mediaContent.getLength()找到了这个问题,或者找到了一个工作示例?不幸的是没有。最后,我以不同的方式做了我需要的事情。我能够找到答案。我将很快发布答案