Итак, то, что я делаю, требует, чтобы я нажал документ с api листов Google, взял лист, вытащил из него данные и сгенерировал другой лист. Поэтому сначала я последовал примеру с использованием учетной записи службы следующим образом:
@Bean(name = "google-creds")
@DependsOn(value = {"google-http-transport", "google-data-store", "json-factory"})
public GoogleCredential authorize(HttpTransport transport, JsonFactory factory) throws Exception {
// Load client secrets.
InputStream in = new FileInputStream(new File("config/oauth.json"));
return GoogleCredential.fromStream(in, transport, factory).createScoped(SCOPES);
}
В моем файле oauth.json используются файлы json, созданные на вкладке учетных данных консоли API. Я создал учетную запись службы в соответствии с инструкциями ... Я немного сомневался.
Мне удалось извлечь данные из документа, который я хотел, и я смог создать другой документ. Однако из того, что я могу сказать, нет возможности просматривать документы, созданные с помощью учетной записи службы. Что ... я имею в виду, что это делает его совершенно бесполезным. Было бы здорово, если бы я мог просматривать эти документы из основной учетной записи, с которой была создана учетная запись службы. Однако несколько ответов Google, похоже, подразумевают, что это невозможно.
Итак, хорошо, я решил, как насчет того, чтобы попробовать использовать идентификатор клиента из основной учетной записи. Я загружаю предоставленный файл json и ... он сообщает об ошибке и сообщает "Тип неизвестного поля". Итак ... я предполагаю, что это сериализация с использованием RuntimeTypeAdapter из gson или чего-то еще. Таким образом, он полностью несовместим с форматом учетных данных из основной учетной записи.
Итак, в следующий раз я попытался сделать это
@Bean(name = "google-creds")
@DependsOn(value = {"google-http-transport", "google-data-store"})
public Credential authorize(HttpTransport transport) throws Exception {
// Load client secrets.
InputStream in = new FileInputStream(new File("config/oauthnew.json"));
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new InputStreamReader(in));
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(transport, factory, clientSecrets, SCOPES)
.setDataStoreFactory(new MemoryDataStoreFactory()).build();
Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
return credential;
}
Так что я не особо в этом разбирался, и оказалось, что он создает локальный причальный сервер по ... какой-то необъяснимой причине. Он также просит меня посетить URL-адрес, который затем беспокоится о перенаправлениях. У меня нет желания ни в каком виде перенаправлять или ... что-либо, кроме синтаксического анализа и создания чертовых таблиц. Также посещение URL-адреса уже является нарушением сделки, если для этого требуется, чтобы учетная запись уже была аутентифицирована. Это должно запускаться программно каждые 10 минут или около того.
Кроме того, когда я использовал верхний пример, я не мог найти нигде, чтобы настроить общий доступ или разрешения в любой форме или форме. У Google обычно есть хорошие API, но это единственный наиболее раздражающий API, который я использовал за почти десятилетие разработки Java. Мне просто нужно уметь A) Анализировать лист A B) Создавать лист B, если необходимо, и C) Уметь просматривать лист B
Может ли кто-нибудь указать мне направление, в котором я не буду кричать на монитор?