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

В кратких руководствах объясняется, как настроить и запустить приложение, вызывающее API Google Workspace.

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

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

Цели

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

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

  • Учетная запись 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

  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» введите через запятую список областей, необходимых вашему приложению. Это тот же набор областей, который вы определили при настройке экрана согласия 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.

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

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