Я пытаюсь получить доступ к Google Таблицам из моего бэкэнда, написанного в Spring MVC. С помощью учебника я получаю что-то вроде этого:Доступ к листам Google из Spring MVC
public static Sheets getSheetsService() throws IOException {
return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, authorize())
.setApplicationName(APPLICATION_NAME)
.build();
}
public static Credential authorize() throws IOException {
// Load client secrets.
InputStream in =
ConcreteSheetsController.class.getResourceAsStream("/secret.json");
GoogleClientSecrets clientSecrets =
GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(DATA_STORE_FACTORY)
.setAccessType("offline")
.build();
Credential credential = new AuthorizationCodeInstalledApp(
flow, new LocalServerReceiver()).authorize("user");
System.out.println(
"Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
return credential;
}
Секрет создается так, как это описано здесь: https://developers.google.com/sheets/quickstart/java
Это «работает», но выход из приложения дает мне ссылку. Когда я нажимаю на нее, мой браузер просит меня выбрать учетную запись Google. Если я это сделаю, все будет хорошо, но я хотел бы иметь более подходящее решение для сервера. Я хотел бы, чтобы мой файл secret.json позволял моему приложению регистрироваться без меня, предоставляя собственную учетную запись пользователя. Есть ли способ сделать эту работу?
Вы можете попытаться взглянуть на служебные учетные записи в разделе Использование [OAuth 2.0 для сервера для серверных приложений] (https://developers.google.com/identity/protocols/OAuth2ServiceAccount). Вы можете совершать вызовы API, особенно при вызове облачных API для доступа к данным на основе проектов, а не к данным, специфичным для пользователя. – noogui