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

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

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

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

Цели

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

Предпосылки

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

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

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

Включить API

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

Создать учетную запись службы

Учетная запись службы — это особый тип учетной записи, используемой приложением, а не человеком. Вы можете использовать учетную запись службы для доступа к данным или выполнения действий учетной записью робота или для доступа к данным от имени пользователей Google Workspace или Cloud Identity. Для получения дополнительной информации см. раздел Понимание учетных записей службы .

Консоль Google Cloud

  1. В консоли Google Cloud перейдите в > IAM и администрирование > Учетные записи служб .

    Перейти к учетным записям услуг

  2. Нажмите Создать учетную запись службы .
  3. Заполните данные учетной записи службы, затем нажмите «Создать» и продолжите .
  4. Необязательно: Назначьте роли вашей учетной записи службы, чтобы предоставить доступ к ресурсам вашего проекта Google Cloud. Для получения более подробной информации см. Предоставление, изменение и отзыв доступа к ресурсам .
  5. Нажмите «Продолжить» .
  6. Необязательно: Введите пользователей или группы, которые могут управлять и выполнять действия с этой учетной записью службы. Для получения более подробной информации см. Управление олицетворением учетной записи службы .
  7. Нажмите Готово . Запишите адрес электронной почты для учетной записи службы.

gcloud CLI

  1. Создайте учетную запись службы:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Необязательно: Назначьте роли вашей учетной записи службы, чтобы предоставить доступ к ресурсам вашего проекта Google Cloud. Для получения более подробной информации см. Предоставление, изменение и отзыв доступа к ресурсам .

Создайте учетные данные для учетной записи службы

Вам необходимо получить учетные данные в виде пары открытого/закрытого ключа. Эти учетные данные используются вашим кодом для авторизации действий учетной записи службы в вашем приложении.
  1. В консоли Google Cloud перейдите в > IAM и администрирование > Учетные записи служб .

    Перейти к учетным записям услуг

  2. Выберите свою учетную запись.
  3. Нажмите Ключи > Добавить ключ > Создать новый ключ .
  4. Выберите JSON , затем нажмите Создать .

    Ваша новая пара открытого/закрытого ключа генерируется и загружается на ваш компьютер как новый файл. Сохраните загруженный файл JSON как credentials.json в вашем рабочем каталоге. Этот файл является единственной копией этого ключа. Информацию о том, как безопасно хранить ключ, см. в разделе Управление ключами учетной записи службы .

  5. Нажмите Закрыть .

Настройте делегирование на уровне домена для учетной записи службы

Для вызова API от имени пользователей в организации Google Workspace вашей учетной записи службы необходимо предоставить делегирование полномочий на уровне домена в консоли администратора Google Workspace с помощью учетной записи суперадминистратора. Для получения дополнительной информации см. Делегирование полномочий на уровне домена учетной записи службы .
  1. В консоли Google Cloud перейдите в > IAM и администрирование > Учетные записи служб .

    Перейти к учетным записям услуг

  2. Выберите свою учетную запись.
  3. Нажмите Показать дополнительные настройки .
  4. В разделе «Делегирование на уровне домена» найдите «Идентификатор клиента» вашей учетной записи службы. Нажмите Копировать , чтобы скопировать значение идентификатора клиента в буфер обмена.
  5. Если у вас есть права суперадминистратора к соответствующей учетной записи Google Workspace, нажмите «Просмотреть консоль администратора Google Workspace» , затем войдите в систему, используя учетную запись суперадминистратора, и продолжайте выполнять следующие действия.

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

    1. В консоли администратора Google перейдите в > Безопасность > Управление доступом и данными > Элементы управления API .

      Перейти к элементам управления API

    2. Нажмите «Управление делегированием на уровне домена» .
    3. Нажмите Добавить новый .
    4. В поле «Идентификатор клиента» вставьте скопированный ранее идентификатор клиента.
    5. В поле "OAuth Scopes" введите разделенный запятыми список областей, требуемых вашим приложением. Это тот же набор областей, который вы определили при настройке экрана согласия OAuth.
    6. Нажмите «Авторизовать» .

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

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

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

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

      apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'KeepQuickstart'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    version = '1.0'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:1.23.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
        implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0'
    }
    

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

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

  2. Включите следующий код в новый файл 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.keep.v1.Keep;
    import com.google.api.services.keep.v1.model.Note;
    import com.google.api.services.keep.v1.model.Section;
    import com.google.api.services.keep.v1.model.TextContent;
    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;
    
    public class KeepQuickstart {
    
      private static final String APPLICATION_NAME = "Google Keep API Java Quickstart";
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
      /**
       * Global instance of the scopes required by this quickstart. If modifying these scopes, delete
       * your previously saved tokens/ folder.
       */
      private static final List<String> KEEP_SCOPES =
          Collections.singletonList("https://www.googleapis.com/auth/keep");
    
      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
       */
      private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = KeepQuickstart.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, KEEP_SCOPES)
                .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens")))
                .setAccessType("offline")
                .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Keep service =
            new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
    
        Section noteBody =
            new Section().setText(new TextContent().setText("Finish preparations by tomorrow!"));
        Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody);
    
        // Creates a new text note.
        service.notes().create(newNote).execute();
      }
    }
    
    

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

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

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

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

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

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