API Google Drive Java: обновление файлов ничего не делает - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь обновить файл на Google Диске с помощью API Java.Операции создания файлов и списков работают нормально, обновление выполняется, но не оказывает видимого влияния на расположение диска.Как и в, старый файл все еще там.Я проверил мой диск, и он не загружается в другом месте.Файл на локальном диске содержит изменения по сравнению с версией на диске и более поздней датой.Нет исключений или сообщений от API

Я попробовал несколько вариантов API, но не повезло.Чего мне не хватает?

Не показано в приведенном ниже коде, API delete () и update () с setTrashed (true) также «ничего не делают».

Вот код, отредактированныйбит:

String credentialsJson = // get credentials JSON is correct

String appName = // app name is correct
String tokensDirectoryPath = // path is correct

String folderId = // folder ID is correct, have verified
NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

// credentials scope is DriveScopes.DRIVE_FILE
Credential cred = getCredentials(httpTransport, credentialsJson, tokensDirectoryPath);
Drive driveService = new Drive.Builder(httpTransport, JSON_FACTORY, cred)
    .setApplicationName(appName)
    .build();

java.io.File file = new java.io.File("./db/batches.json");

String fileMimeType = "application/json";
Drive.Files driveFiles = driveService.files();
FileContent mediaContent = new FileContent(fileMimeType, file);

String fileId = // the fileID is correct, have verified

File fileMetadata = new File();
fileMetadata.setName(file.getName());
fileMetadata.setMimeType(fileMimeType);
fileMetadata.setDescription("Updated by test");

// result: HTTP 200 and no changes on Drive
File f = driveFiles
            .update(fileId, fileMetadata, mediaContent)
            .execute();
System.out.println("f = [" + f + "]");

// OTOH, this works fine but creates a new version of the file on Drive alongside the old one
//fileMetadata.setParents(Collections.singletonList(folderId));
//driveFiles.create(fileMetadata, mediaContent).execute();

Приведенный выше код выводит следующее как для ветвей создания, так и для обновлений (если предупреждения актуальны):

Sep 27, 2019 3:42:22 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for everybody: -redacted-\db\sensitive\tokens
Sep 27, 2019 3:42:22 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for owner: -redacted-\db\sensitive\tokens
f = [{"id":"-redacted-","kind":"drive#file","mimeType":"application/json","name":"batches.json"}]

РЕДАКТИРОВАТЬ: Вот версии:

  • com.google.apis: google-api-services-drive: v3-rev173-1.25.0
  • com.google.api-client: google-api-client: 1.23.0
  • com.google.oauth-client: google-oauth-client-jetty: 1.23.0
...