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

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

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

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

Цели

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

Требования

Как настроить среду

Чтобы выполнить инструкции из этого руководства, настройте среду.

Включение API

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

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

  1. В Google API Console нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Branding (Брендинг).

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

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

Как авторизовать учетные данные для приложения на компьютере

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

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Компьютерное приложение.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агента, так и стандартные функции, создайте отдельные клиенты OAuth для каждого из них. После создания клиента изменить эту настройку нельзя.
  6. Нажмите Создать.

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

  7. Сохраните скачанный 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 по умолчанию и замените его содержимое следующим кодом:

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

Как настроить образец

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

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

    people/quickstart/src/main/java/PeopleQuickstart.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.people.v1.PeopleService;
    import com.google.api.services.people.v1.PeopleServiceScopes;
    import com.google.api.services.people.v1.model.ListConnectionsResponse;
    import com.google.api.services.people.v1.model.Name;
    import com.google.api.services.people.v1.model.Person;
    
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.GeneralSecurityException;
    import java.util.Arrays;
    import java.util.List;
    
    public class PeopleQuickstart {
      private static final String APPLICATION_NAME = "Google People API Java Quickstart";
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      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 = Arrays.asList(PeopleServiceScopes.CONTACTS_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 = PeopleQuickstart.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();
        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();
        PeopleService service =
            new PeopleService.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
    
        // Request 10 connections.
        ListConnectionsResponse response = service.people().connections()
            .list("people/me")
            .setPageSize(10)
            .setPersonFields("names,emailAddresses")
            .execute();
    
        // Print display name of connections if available.
        List<Person> connections = response.getConnections();
        if (connections != null && connections.size() > 0) {
          for (Person person : connections) {
            List<Name> names = person.getNames();
            if (names != null && names.size() > 0) {
              System.out.println("Name: " + person.getNames().get(0)
                  .getDisplayName());
            } else {
              System.out.println("No names available for connection.");
            }
          }
        } else {
          System.out.println("No connections found.");
        }
      }
    }

Запустите пример

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

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

    Ваше приложение на Java запущено и вызывает People API.

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

Дальнейшие действия