Я пытаюсь использовать Gmail API на сервере java. начиная с моих зависимостей maven
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-gmail</artifactId>
<version>v1-rev20200406-1.30.9</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>0.20.0</version>
</dependency>
Я загрузил хранилище ключей p12 из диспетчера API Google и создал учетную запись службы
PrivateKey key = (PrivateKey)keystore.getKey("privatekey", "somepass".toCharArray());
ServiceAccountCredentials serviceAccountCredentials = ServiceAccountCredentials.newBuilder()
.setClientEmail("somestuff@developer.gserviceaccount.com")
.setServiceAccountUser("somestuff@developer.gserviceaccount.com")
.setClientId("somenumber")
.setScopes(SCOPES)
.setPrivateKey(key).build();
теперь, похоже, это работает
serviceAccountCredentials.refresh();
1009 * генерировать маркер на форме 1011 *
ya29. c .Ko8BygeNYc2Onx2IZpK-ocaHKTiCxOcYYK7nbTg8uE0gyqc8rXROuiVJ7oXCfnYD1pDOyHXiy_K5Eyk3aV3epgjtnr2WVCP_xpWCxq-BExh4i1aIXW9m7gkkUtbteXaD1nETUwIc6n9Uz2oCJSU4jrodFv4n4drxlSGd7my0LcxrMk_E5cFY7jo-Vt40i58g5QY 1015 * Теперь часть я не могу для работы
HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(serviceAccountCredentials);
Gmail service = new Gmail.Builder(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), requestInitializer).setApplicationName(APPLICATION_NAME).build();
Gmail.Users.Labels.List list = service.users().labels().list("b@someemail")
.setAccessToken(credential.getAccessToken().getTokenValue());
Я также выполнил всю настройку Gmail, предложенную Gmail REST API: 400 Bad Request + Failed Precondition
Но я продолжаю получать
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code" : 401,
"errors" : [ {
"domain" : "global",
"location" : "Authorization",
"locationType" : "header",
"message" : "Invalid Credentials",
"reason" : "authError"
} ],
"message" : "Invalid Credentials"
}
С уважением