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

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

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

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

Цели

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

Предварительные требования

  • Аккаунт Google.

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

Для завершения этого краткого руководства настройте свою среду.

Включить API

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

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

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

    Перейти к разделу «Брендинг»

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

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

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

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

  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 и замените его содержимое следующим кодом:

    docs/quickstart/build.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'DocsQuickstart'
    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-docs:v1-rev20220609-2.0.0'
    }

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

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

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

    docs/quickstart/src/main/java/DocsQuickstart.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.docs.v1.Docs;
    import com.google.api.services.docs.v1.DocsScopes;
    import com.google.api.services.docs.v1.model.Document;
    
    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 Docs get documents API */
    public class DocsQuickstart {
      /**
       * Application name.
       */
      private static final String APPLICATION_NAME = "Google Docs 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";
      private static final String DOCUMENT_ID = "195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE";
    
      /**
       * 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(DocsScopes.DOCUMENTS_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 = DocsQuickstart.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();
        Docs service = new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();
    
        // Prints the title of the requested doc:
        // https://docs.google.com/document/d/195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE/edit
        Document response = service.documents().get(DOCUMENT_ID).execute();
        String title = response.getTitle();
    
        System.out.printf("The title of the doc is: %s\n", title);
      }
    }

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

  1. Запустите пример:

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

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

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

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