#java #google-api #gmail-api #service-accounts #google-api-java-client
Вопрос:
У меня проблема при вызове службы Gmail для вставки MimeMessage
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(accountId)
.setServiceAccountPrivateKeyFromP12File(new File(urlFile))
.setServiceAccountScopes(
Collections.singleton(GmailScopes.GMAIL_INSERT))
.setServiceAccountUser(accountUser).build();
Gmail service = new Gmail.Builder(httpTransport, JSON_FACTORY,
credential).build();
....
message = service.users().messages().insert(accountUser, message)
.setDeleted(Boolean.TRUE).execute();
Я получаю ошибку 400 :
com.google.api.клиент.аутентификация.oauth2.Исключение TokenResponseException: 400 неверных запросов { «ошибка» : «недействительный_грант», «описание ошибки» : «java.безопасность.Исключение SignatureException: Недопустимая подпись для токена:….}
Ответ №1:
Похоже, что-то не так с настройкой делегирования для пользователя, которого вы забыли добавить в домен Google workspace, которого вы хотите делегировать в качестве пользователя check setserviceaccount.
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(GmailScopes.GMAIL_INSERT)
.setServiceAccountUser(googleWorkspaceDomainUserToDeligateTo)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Тем не менее, это не та ошибка, которую я ожидал бы, чтобы вызвать invalid_grant. Я думаю, что это вызвано тем фактом, что вы неправильно настроили учетную запись службы в Google workspace.
Комментарии:
1. раньше все работало нормально с той же учетной записью пользователя/ключом (та же конфигурация) , и вдруг мы получаем эту ошибку… может ли это быть связано с просроченной/деактивированной учетной записью Google… ?
2. Я бы проверил вашу учетную запись рабочего пространства, если кто-то что-то там изменил, это могло повлиять на проект.