У меня есть потребительская учетная запись google формы «[email protected]», для которой у меня есть служебная учетная запись формы «[email protected]». Я пытаюсь использовать закрытый ключ, сгенерированный для этой учетной записи службы, для создания токена доступа, а затем может редактировать или просматривать календарь, связанный с «[email protected]». Код аутентификации:Не удалось извлечь токен доступа к учетной записи службы google
String emailAddress = "[email protected]";
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
File file = new File("path to .p12 file");
HttpTransport httpTransport = GoogleNetHttpTransport
.newTrustedTransport();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(file)
.setServiceAccountScopes(
Collections.singleton("https://www.googleapis.com/auth/calendar"))
.setServiceAccountUser("[email protected]")
.build();
String accessToken = credential.getAccessToken();
Но маркер доступа генерируется является недействительным. У учетной записи службы есть разрешения на редактирование. Программа имеет доступ к файлу .p12. Любая подсказка относительно того, где я иду не так?
Тогда где я могу использовать учетную запись службы, созданную для учетной записи пользователя? Я убежден, что он работал так же, как и в домене приложений. – tinus91
Ваша вера неверна. Фраза «учетная запись службы, созданная для учетной записи пользователя» не имеет смысла. Учетные записи служб не связаны с потребительскими счетами. – pinoyyid
Вот почему я спросил, было ли то, что я считал неправильным, что такое использование учетной записи службы, созданной под учетной записью пользователя. Потому что я могу создать учетную запись службы для своего личного идентификатора google apps. – tinus91