Не удается получить доступ к Google REST Api с использованием учетной записи службы - PullRequest
0 голосов
/ 13 декабря 2018

Мне нужен доступ к конечным точкам Google BigQuery REST Api с учетной записью службы с использованием клиентской библиотеки Http.Итак, я попробовал код, приведенный в статье Использование OAuth 2.0 для серверных приложений

Это дает мне ошибку компиляции в следующей строке.

Algorithm.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

Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 27 февраля 2019

Что я обнаружил, изучая реализацию: RSAPrivateKey наследуется от PrivateKey, поэтому, если вы разыгрываете его (может быть, сначала проверяете тип), тогда вам следует идти вперед!

...