如何解决正在从GoogleCredentials获取应用程序默认值
我正在研究一个java spring项目,该项目要求我向Google Pub / Sub发布消息。我需要在发布请求中将访问令牌作为授权标头发送。 我尝试使用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"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。