Google диск скачать файл publi c без учетных данных - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь загрузить файл google drive publi c без использования каких-либо учетных данных. Мой код выглядит следующим образом:

    String fileId = "id_removed";
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    Drive driveService = new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), new HttpRequestInitializer() {
        @Override
        public void initialize(HttpRequest httpRequest) throws IOException {

        }
    }).setApplicationName("test app").build();
    driveService.files().export(fileId, "txt")
            .executeAndDownloadTo(outputStream);

    String finalString = new String(outputStream.toByteArray());

    System.out.println(finalString);

Но это получит 403 от Google:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "usageLimits",
    "message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "reason" : "dailyLimitExceededUnreg",
    "extendedHelp" : "https://code.google.com/apis/console"
  } ],
  "message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}

Можно ли программно загрузить файл из Google без каких-либо учетных данных?

1 Ответ

0 голосов
/ 15 апреля 2020

Замечания:

Использование вашего кода потребует как минимум использования ключа API. Обычно ваша ошибка также появляется, когда ключ API не активирован в вашей консоли.

Решение:

Чтобы загрузить файлы с диска Google без ключа API или учетных данных OAuth2, вы можете выполнить 2 стратегии:

Маленькие файлы:

Использование одного из exportLinks, полученных с помощью Drive API .get() метода.

// This won't require any authorization
InputStream in = new URL("https://docs.google.com/feeds/download/documents/export/Export?id=####&exportFormat=docx").openStream();
Files.copy(in, Paths.get("./the_doc.docx"), StandardCopyOption.REPLACE_EXISTING);

Большие файлы:

Выполните действия, описанные в этом сообщении о переполнении стека: { ссылка }

Ссылки:

Файлы API накопителя

...