gpt4 book ai didi

java - 从 GoogleCredentials 获取 applicationDefault

转载 作者:行者123 更新时间:2023-12-04 09:10:16 26 4
gpt4 key购买 nike

我正在开发一个 java spring 项目,该项目要求我向 Google Pub/Sub 发布消息。我需要在 post 请求中将访问 token 作为 Authorization header 发送。
我尝试使用 GoogleCredentials.getApplicationDefault() 但它需要在环境变量中设置 GOOGLE_APPLICATION_CREDENTIALS 。
这是我尝试过的

Map<String, String> env = System.getenv();
Field field = env.getClass().getDeclaredField("m");
field.setAccessible(true);

((Map<String, String>) field.get(env)).put("GOOGLE_APPLICATION_CREDENTIALS", "/etc/gcp/sa_credentials.json");

GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
credentials.refreshIfExpired();

String accessToken = credentials.getAccessToken().toString();
当我尝试运行它时,出现此错误 - java.io.IOException: Scopes not configured for service account. Scoped should be specified by calling createScoped or passing scopes to constructor我不确定如何为服务帐户添加范围。有什么我想念的吗?

最佳答案

只需创建一个像这样的范围凭据

GoogleCredentials credentials = GoogleCredentials.getApplicationDefault().createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));

关于java - 从 GoogleCredentials 获取 applicationDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63363117/

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