gpt4 book ai didi

java - GoogleCredential.getApplicationDefault() 不返回 GCE 实例凭证

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:13 25 4
gpt4 key购买 nike

我正在 GCE 上运行 Java 应用程序。我正在尝试从此实例获取 Google Cloud 凭证以在我的应用程序中使用。在 GCE 上运行时,返回的凭证不是实例凭证,即使我使用的是应用程序默认凭证。这是我的完整代码:

package test;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.util.Utils;
import com.google.api.client.http.HttpTransport;

import java.util.Arrays;

public class Test {
public static void main(String[] args) throws Exception {
HttpTransport transport = Utils.getDefaultTransport();
GoogleCredential credential = GoogleCredential.getApplicationDefault(transport, Utils.getDefaultJsonFactory());
credential = credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/userinfo.email"));
System.out.println(credential.getServiceAccountId());
}
}

我的gradle文件:

repositories {
mavenCentral()
}

apply plugin: 'java'
apply plugin: 'application'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

project.mainClassName = 'test.Test'

dependencies {
compile group: 'com.google.api-client', name: 'google-api-client', version: '1.22.0'
}

我已使用 :assembleDist gradle 目标将其构建到发行版中。我已将组装的发行版复制到 GCE 实例。 gcloud auth list 的结果是:

Credentialed Accounts:
- ##########-compute@developer.gserviceaccount.com ACTIVE
To set the active account, run:
$ gcloud config set account `ACCOUNT`

当我运行代码时,输​​出是:

java -jar test-1.0-all.jar 
null

最佳答案

问题是计算机上不存在“userinfo.email”范围。在实例创建期间选择“允许完全访问云 API”时,此范围将永远不会出现。看起来像是谷歌端的一个错误。

关于java - GoogleCredential.getApplicationDefault() 不返回 GCE 实例凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com