спасибо за ввод, но я наконец нашел свой ответ.Из примеров я использовал код для установленных приложений (автономные приложения).
Вместо этого я должен был использовать «учетную запись службы».Это можно легко создать из обычной учетной записи пользователя Google.Вы получите JSON и должны указать полный путь к этому файлу json в переменной среды GOOGLE_APPLICATION_CREDENTIALS
Более подробную информацию можно найти здесь: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
Как только у вас появится GoogleCredentialobject, остальная часть примера кода остается прежней.
EDIT: Использование решения, которое я описал ранее "Установленное приложение" / "Автономное приложение", подходит для демонстрационных целей, где естьэто пользователь, который фактически нажимает на ссылку, которая появляется, и чтобы обновлять токен с истекшим сроком действия каждые 60 минут или около того.
Правильное решение - использовать служебную учетную запись и выдавать себя за родительскую учетную запись (с кем вы создали учетную запись службы).Вот пример:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(GCredentials.JSON_FACTORY)
.setServiceAccountId("xxxxxx@xyz.iam.gserviceaccount.com")
.setServiceAccountUser("This is the email of the real user that you want to impersonate")
.setServiceAccountProjectId("The project ID")
.setServiceAccountPrivateKeyFromP12File(p12File)
.setServiceAccountScopes(SCOPES)
.build();
Администратор должен предоставить вам соответствующие права (ОБЛАСТИ), которые вы объявляете, и это должно быть сделано с использованием идентификатора КЛИЕНТА наконсоль администратора.
Также вы должны убедиться, что учетная запись, которую вы олицетворяете, является членом папки g-drive.Это не требуется для учетной записи службы.Имя проекта также должно быть правильным при создании экземпляра DriveService.Я надеюсь, что это поможет многим людям и позволит не тратить много времени на успешное подключение.