загружать файлы на диск Google из приложения Java без взаимодействия с пользователем

Я разрабатываю java-приложение, в котором я хочу, чтобы приложение загружало файлы на диск Google без какого-либо взаимодействия с пользователем, и после сохранения файлов я хочу, чтобы его просматривал реальный человек. Можете ли вы помочь мне достичь вышеизложенного?

Проблемы, с которыми я сталкиваюсь,

Аутентификация с использованием учетных записей, принадлежащих приложению: в случае обычной учетной записи: аутентификация с использованием ключа API, но невозможность вставки файлов. В случае служебных учетных записей: файлы успешно аутентифицированы и вставлены на диск, но не могут быть просмотрены реальным человеком. Использование загружаемых файлов: я не уверен, где взять auth_code и как установить его в заголовок. Пример кода будет полезен.

Было бы здорово, если бы вы могли помочь мне в этом.


person user3912598    schedule 06.08.2014    source источник


Ответы (1)


Самый простой способ — установить клиент Google Диска, а затем просто поместить файлы прямо в каталог Google Диска. Google Диск автоматически загрузит и опубликует. Готово.

В противном случае вам нужно пройти через API Google Диска, чтобы выполнить загрузку, и через API OAuth, чтобы получить auth_token. Точный способ сделать это зависит от платформы. Для нативного Java-приложения, работающего в Windows, код будет выглядеть примерно так:

  try {
    GoogleTokenResponse response = new GoogleAuthorizationCodeTokenRequest(
        transport,
        jsonFactory,
        clientSecrets.getWeb().getClientId(),
        clientSecrets.getWeb().getClientSecret(),
        code,
        clientSecrets.getWeb().getRedirectUris().get(0)).execute();
    return buildEmpty().setAccessToken(response.getAccessToken());
  } catch (IOException e) {
    new RuntimeException("An unknown problem occured while retrieving token");
  }

За дополнительной информацией:

https://developers.google.com/drive/web/examples/java

person Jeff-Inventor ChromeOS    schedule 06.08.2014
comment
Спасибо за ответ. Мое требование - загружать файлы на Google Диск программным способом, используя java в качестве фонового процесса. Следовательно, нельзя выбрать вариант установки клиента Google Диска. В приведенном выше примере кода какое значение имеет переменная 'code'?? Откуда взять значение?? - person user3912598; 06.08.2014
comment
Проверьте ссылку. Там немного больше кода, я только что процитировал основной раздел. - person Jeff-Inventor ChromeOS; 06.08.2014
comment
Я также пытался использовать REST, но не уверен, как установить заголовок, потому что я получаю ответ как «статус ответа 411 Длина требуется» для следующего кода - person user3912598; 06.08.2014
comment
‹code› ClientConfig config = new DefaultClientConfig(); Клиент-клиент = Client.create(config); WebResource webService = client.resource(UriBuilder.fromUri(accounts.google.com/ о/oauth2/auth).build()); Ответ ClientResponse = webService.header(тип_ответа, токен).header(client_id, CLIENT_ID).header(redirect_uri, REDIRECT_URI). header(область, профиль).header(Content-Length, 0).post(ClientResponse.class);‹code› - person user3912598; 06.08.2014