Краткое руководство по Java

Создайте приложение командной строки Java, которое отправляет запросы к API Google Диска.

В кратких руководствах объясняется, как настроить и запустить приложение, вызывающее API Google Workspace. В этом кратком руководстве используется упрощённый подход к аутентификации, подходящий для тестовой среды. В рабочей среде рекомендуем изучить вопросы аутентификации и авторизации, прежде чем выбирать подходящие для вашего приложения учётные данные для доступа .

В этом кратком руководстве используются рекомендуемые клиентские библиотеки API Google Workspace для обработки некоторых деталей процесса аутентификации и авторизации.

Цели

  • Настройте свою среду.
  • Настройте образец.
  • Запустите образец.

Предпосылки

  • Учетная запись Google с включенным Google Диском.

Настройте свою среду

Чтобы завершить этот быстрый старт, настройте свою среду.

Включить API

Перед использованием API Google необходимо включить их в проекте Google Cloud. Вы можете включить один или несколько API в одном проекте Google Cloud.

Если вы используете новый проект Google Cloud для выполнения этого краткого руководства, настройте экран согласия OAuth. Если вы уже выполнили этот шаг для своего проекта Cloud, перейдите к следующему разделу.

  1. В консоли Google Cloud перейдите в > > Брендинг .

    Перейти к брендингу

  2. Если вы уже настроили , вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: пока не настроено , нажмите «Начать» :
    1. В разделе «Информация о приложении» в поле «Имя приложения » введите имя приложения.
    2. В поле Адрес электронной почты службы поддержки пользователей выберите адрес электронной почты службы поддержки, по которому пользователи смогут связаться с вами, если у них возникнут вопросы относительно их согласия.
    3. Нажмите кнопку «Далее» .
    4. В разделе Аудитория выберите Внутренняя .
    5. Нажмите кнопку «Далее» .
    6. В разделе «Контактная информация» введите адрес электронной почты , на который вы можете получать уведомления о любых изменениях в вашем проекте.
    7. Нажмите кнопку «Далее» .
    8. В разделе Готово ознакомьтесь с Политикой обработки данных пользователей API служб Google и, если вы согласны, выберите Я согласен с Политикой обработки данных пользователей API служб Google .
    9. Нажмите «Продолжить» .
    10. Нажмите «Создать» .
  3. На данный момент вы можете пропустить добавление областей действия. В будущем при создании приложения для использования за пределами вашей организации Google Workspace необходимо изменить тип пользователя на «Внешний» . Затем добавьте области действия авторизации, необходимые вашему приложению. Подробнее см. в полном руководстве по настройке согласия OAuth .

Авторизация учетных данных для настольного приложения

Для аутентификации конечных пользователей и доступа к их данным в вашем приложении необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах Google OAuth. Если ваше приложение работает на нескольких платформах, необходимо создать отдельный идентификатор клиента для каждой платформы.
  1. В консоли Google Cloud перейдите в > > Клиенты .

    Перейти к клиентам

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Приложение для ПК .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. Нажмите «Создать» .

    Новые учетные данные появятся в разделе «Идентификаторы клиентов OAuth 2.0».

  6. Сохраните загруженный JSON-файл как credentials.json и переместите его в рабочий каталог.

Подготовьте рабочее место

  1. В вашем рабочем каталоге создайте новую структуру проекта:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. В каталоге src/main/resources/ скопируйте ранее загруженный вами файл credentials.json .

  3. Откройте файл build.gradle по умолчанию и замените его содержимое следующим кодом:

    диск/быстрый старт/сборка.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'DriveQuickstart'
    sourceCompatibility = 11
    targetCompatibility = 11
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:2.0.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1'
        implementation 'com.google.apis:google-api-services-drive:v3-rev20220815-2.0.0'
    }

Настройте образец

  1. В каталоге src/main/java/ создайте новый файл Java с именем, соответствующим значению mainClassName в файле build.gradle .

  2. Включите следующий код в новый файл Java:

    drive/quickstart/src/main/java/DriveQuickstart.java
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.drive.Drive;
    import com.google.api.services.drive.DriveScopes;
    import com.google.api.services.drive.model.File;
    import com.google.api.services.drive.model.FileList;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.GeneralSecurityException;
    import java.util.Collections;
    import java.util.List;
    
    /* class to demonstrate use of Drive files list API */
    public class DriveQuickstart {
      /**
       * Application name.
       */
      private static final String APPLICATION_NAME = "Google Drive API Java Quickstart";
      /**
       * Global instance of the JSON factory.
       */
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      /**
       * Directory to store authorization tokens for this application.
       */
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
      /**
       * Global instance of the scopes required by this quickstart.
       * If modifying these scopes, delete your previously saved tokens/ folder.
       */
      private static final List<String> SCOPES =
          Collections.singletonList(DriveScopes.DRIVE_METADATA_READONLY);
      private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
    
      /**
       * Creates an authorized Credential object.
       *
       * @param HTTP_TRANSPORT The network HTTP Transport.
       * @return An authorized Credential object.
       * @throws IOException If the credentials.json file cannot be found.
       */
      private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = DriveQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        if (in == null) {
          throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
        }
        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(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
            .setAccessType("offline")
            .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
        //returns an authorized Credential object.
        return credential;
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .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());
          }
        }
      }
    }

Запустите образец

  1. Запустите образец:

    gradle run
    
  1. При первом запуске образца вам будет предложено разрешить доступ:
    1. Если вы ещё не вошли в свою учётную запись Google, сделайте это при появлении соответствующего запроса. Если вы вошли в несколько учётных записей, выберите одну из них для авторизации.
    2. Нажмите «Принять» .

    Ваше приложение Java запускается и вызывает API Google Drive.

    Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода вам не потребуется проходить авторизацию.

Следующие шаги