有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java应用程序默认凭据无法创建Google App Engine服务帐户凭据

我正在开发一个应用程序,它使用AppEngine上部署的rest端点启动Google VM实例

初始化计算引擎API时,我提供应用程序默认凭据(因为我希望这将返回AppEngine服务帐户凭据)

GoogleCredential credential = GoogleCredential.getApplicationDefault();
if (credential.createScopedRequired()) {
    List<String> scopes = new ArrayList<>();
    // Set Google Compute Engine scope to Read-write.
    scopes.add(ComputeScopes.COMPUTE);
    credential = credential.createScoped(scopes);
}
return new Compute.Builder(httpTransport(), jsonFactory(), credential)
                  .setApplicationName(env.getProperty("spring.application.name"))
                  .build();

但我最后犯了一个错误:

java.io.IOException: Application Default Credentials failed to create the Google App Engine service account credentials

我正在使用库:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>${google-api-client.version}</version>
</dependency>
<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-compute</artifactId>
    <version>${google-api-services-compute.version}</version>
</dependency>

共 (1) 个答案

  1. # 1 楼答案

    我通过使用谷歌api cient appengine而不是谷歌api客户端解决了这个问题:

    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client-appengine</artifactId>
        <version>${google-api-client-appengine.version}</version>
    </dependency>
    

    并使用以下方法初始化谷歌凭证:

    GoogleCredential credential = AppEngineCredentialWrapper.getApplicationDefault();