Служба Gmail вставляет MimeMessage

#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. Я бы проверил вашу учетную запись рабочего пространства, если кто-то что-то там изменил, это могло повлиять на проект.