Как получить доступ к Team Drive через служебную учетную запись с Google Drive API v3 Java - PullRequest
0 голосов
/ 02 апреля 2020

Добрый день!

У меня проблемы с доступом к Google Team Drive.

Мне нужно создать папки и загрузить туда файлы из локального хранилища, и все это должно быть сделано моим приложением .

На данный момент я научился подключаться к своему личному Google Диску и загружать туда файлы. Мой код для подключения к личному хранилищу:

        Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) //
                .setApplicationName(APPLICATION_NAME).build();


        // Print the names and IDs for up to 10 files.
        FileList result = service.files().list().setPageSize(10).setFields("nextPageToken, files(id, name)").execute();
        List<File> files = result.getFiles();
        if (files == null || files.isEmpty()) {
            System.out.println("No files found.");
        } else {
            System.out.println("Files:");
            for (File file : files) {
                System.out.printf("%s (%s)\n", file.getName(), file.getId());
            }
        }

Подскажите, как мне подключиться к Google Team Drive в java и загружать туда файлы? Спасибо:)

1 Ответ

2 голосов
/ 02 апреля 2020

Подключение к командному диску с учетной записью службы в java

При условии, что вы уже выполнили предварительные условия, которые

  • Создание учетной записи службы Google
  • Загрузка учетных данных
  • Либо предоставьте общий доступ к командному диску с учетной записью службы, либо разрешите делегирование на уровне домена для олицетворения пользователя, имеющего доступ к командному диску

Ваш код должен выглядеть что-то вроде этого:

   private static final String APPLICATION_NAME = "YOUR APPLICATION";
   private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

   private static final List < String > SCOPES = Collections.singletonList("XXXINSERTHEREYOURSCOPEXXXX");

   public static void main(String...args) throws IOException, GeneralSecurityException {
    final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

    File pk12 = new File("quickstartserv.p12");
    String serviceAccount = "EMAIL FO YOUR SERVICE ACCOUNT.iam.gserviceaccount.com";

    // Build service account credential.Builder necessary for the ability to refresh tokens

    GoogleCredential getCredentials = new GoogleCredential.Builder()
     .setTransport(HTTP_TRANSPORT)
     .setJsonFactory(JSON_FACTORY)
     .setServiceAccountId(serviceAccount)
     .setServiceAccountPrivateKeyFromP12File(pk12)
     .setServiceAccountScopes(SCOPES)
     .setServiceAccountUser("xxx") //IF YOU WANT TO IMPERSONATE A USER
     .build();

    // Build a new authorized API client service.

    Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials)
     .setApplicationName(APPLICATION_NAME)
     .build();

     FileList result = service.files().list().setPageSize(10).setQ('"ID OF THE SHARED DRIVE" in parents').setIncludeTeamDriveItems(true).setSupportsTeamDrives(true).setFields("nextPageToken, files(id, name)").execute();
     ...
   }

Помните, что setIncludeTeamDriveItems(true) и setSupportsTeamDrives(true) необходимы для получения файлов с общего диска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...