无法使用服务帐户访问 Google REST Api
Posted
技术标签:
【中文标题】无法使用服务帐户访问 Google REST Api【英文标题】:Not able to access Google REST Api using Service Account 【发布时间】:2018-12-13 11:57:39 【问题描述】:我需要使用 Http 客户端库使用服务帐户访问 Google's BigQuery REST Api Endpoints。 于是,我尝试了Using OAuth 2.0 for Server to Server Applications文章中提供的代码
它在下面的行中给了我编译错误。
算法.RSA256(null, privateKey)
代码如下:
GoogleCredential credential = GoogleCredential
.fromStream(new FileInputStream("service_account.json"));
PrivateKey privateKey = credential.getServiceAccountPrivateKey();
String privateKeyId = credential.getServiceAccountPrivateKeyId();
try
Algorithm algorithm = Algorithm.RSA256(null, privateKey);
String signedJwt = JWT.create().withKeyId(privateKeyId)
.withIssuer("123456-compute@developer.gserviceaccount.com")
.withSubject("123456-compute@developer.gserviceaccount.com")
.withAudience("https://firestore.googleapis.com/google.firestore.v1beta1.Firestore")
.withIssuedAt(new Date(now)).withExpiresAt(new Date(now + 3600 * 1000L)).sign(algorithm);
catch (Exception e)
e.printStackTrace();
注意: Algorithm.RSA256() 接受 java.security.interfaces.RSAPrivateKey 而 Google Api 返回 java.security.PrivateKey
有人可以帮我吗?
【问题讨论】:
这可能对developers.google.com/api-client-library/java/…有帮助 【参考方案1】:我对实现的发现:RSAPrivateKey 继承自 PrivateKey,所以如果你转换它(可能先进行类型检查),那么你应该很高兴!
【讨论】:
以上是关于无法使用服务帐户访问 Google REST Api的主要内容,如果未能解决你的问题,请参考以下文章
无法访问通过 Google 电子表格 API 通过服务帐户创建的工作表
Google云端硬盘访问 - 服务帐户或OAuth - 读取/写入用户文件
使用 REST API 向 Google Cloud Platform 上的服务帐户添加角色
YouTube API - 使用 Google 管理员帐户访问多个 youtube 频道(品牌帐户)
如何通过服务帐户通过 Google BigQuery External Table 访问 Google Sheets Doc