Итак, что я делаю, требует, чтобы я щелкнул документ с помощью API google sheet, взял лист, извлек из него данные и сгенерировал другой лист.Поэтому вначале я следовал примеру с использованием учетной записи службы:
@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 и ... он выдает ошибки и говорит неизвестное поле 'type'.Так что ... я предполагаю, что это сериализация с использованием 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) анализировать лист AB) создавать лист B при необходимости и C) иметь возможность просматривать лист B
Может ли кто-то указать мне направление, в котором я не кричу на свой монитор