Я хотел получить доступ к хранилищу GCP снаружи.Поэтому я использовал следующие шаги, которые предоставил Google.
- Создал учетную запись службы
- Сгенерировал токен jwt, используя закрытый ключ, предоставленный для учетной записи службы.
Когда я вызывал вышеуказанный API для получения токена доступа путем предоставления токена jwt, он выдает следующую ошибку.
{
"error": "invalid_scope",
"error_description": "Empty or missing scope not allowed."
}
Заранее спасибо!
https://developers.google.com/identity/protocols/OAuth2ServiceAccount
Это код Java, который я использовал для генерации JWT
long now = System.currentTimeMillis();
try {
GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("service.json"));
PrivateKey privateKey = credential.getServiceAccountPrivateKey();
String privateKeyId = credential.getServiceAccountPrivateKeyId();
Algorithm algorithm = Algorithm.RSA256(null, (RSAPrivateKey) privateKey);
String signedJwt = JWT.create()
.withKeyId(privateKeyId)
.withIssuer("***********@************-******.iam.gserviceaccount.com")
.withSubject("***********@************-******.iam.gserviceaccount.com")
.withAudience("https://www.googleapis.com/oauth2/v4/token")
.withIssuedAt(new Date(now))
.withExpiresAt(new Date(now + 3600 * 1000L))
.sign(algorithm);
System.out.println(signedJwt);
} catch(Exception e) {
System.out.println(e);
}