Krótkie wprowadzenie do Javy

Krótkie wprowadzenia wyjaśniają, jak skonfigurować i uruchomić aplikację, która wywołuje interfejs Google Workspace API.

Krótkie wprowadzenia do Google Workspace wykorzystują biblioteki klienta interfejsu API do obsługi niektórych szczegółów procesu uwierzytelniania i autoryzacji. Na potrzeby własnych aplikacji zalecamy używanie bibliotek klienta. W tym krótkim wprowadzeniu używamy uproszczonej metody uwierzytelniania, która jest odpowiednia dla środowiska testowego. W przypadku środowiska produkcyjnego zalecamy zapoznanie się z uwierzytelnianiem i autoryzacją przed wybraniem danych logowania odpowiednich dla aplikacji.

Utworzyć aplikację wiersza poleceń w Javie, która wysyła żądania do interfejsu Google Keep API.

Cele

  • skonfigurować środowisko,
  • Skonfiguruj fragment.
  • Uruchom próbkę.

Wymagania wstępne

  • mieć konto Google z włączoną usługą Google Keep;

Konfigurowanie środowiska

Aby wykonać to krótkie wprowadzenie, skonfiguruj środowisko.

Włącz API

Zanim zaczniesz korzystać z interfejsów API Google, musisz włączyć je w projekcie Google Cloud. W jednym projekcie Google Cloud możesz włączyć 1 lub więcej interfejsów API.

Utwórz konto usługi

Konto usługi to specjalne konto używane przez aplikację, a nie osobę. Za pomocą konta usługi możesz uzyskiwać dostęp do danych, wykonywać działania na koncie robota oraz uzyskiwać dostęp do danych w imieniu użytkowników Google Workspace lub Cloud Identity. Więcej informacji znajdziesz w opisie kont usługi.

Konsola Google Cloud

  1. W konsoli Google Cloud kliknij Menu > Administracja > Konta usługi.

    Otwórz stronę Konta usługi

  2. Kliknij Utwórz konto usługi.
  3. Wpisz szczegóły konta usługi, a potem kliknij Utwórz i kontynuuj.
  4. Opcjonalnie: przypisz role do swojego konta usługi, aby przyznać dostęp do zasobów projektu Google Cloud. Więcej informacji znajdziesz w artykule Przyznawanie, zmienianie i odbieranie dostępu do zasobów.
  5. Kliknij Dalej.
  6. Opcjonalnie: wpisz użytkowników lub grupy, które mogą zarządzać tym kontem usługi i wykonywać na nim działania. Więcej informacji znajdziesz w artykule Zarządzanie przejmowaniem tożsamości konta usługi.
  7. Kliknij Gotowe. Zapisz adres e-mail konta usługi.

interfejs wiersza poleceń gcloud

  1. Utwórz konto usługi:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Opcjonalnie: przypisz role do swojego konta usługi, aby przyznać dostęp do zasobów projektu Google Cloud. Więcej informacji znajdziesz w artykule Przyznawanie, zmienianie i odbieranie dostępu do zasobów.

Tworzenie danych logowania dla konta usługi

Dane logowania musisz uzyskać w postaci pary kluczy (publicznego/prywatnego). Kod służy do autoryzacji działań konta usługi w aplikacji.
  1. W konsoli Google Cloud kliknij Menu > Administracja > Konta usługi.

    Otwórz stronę Konta usługi

  2. Wybierz konto usługi.
  3. Kliknij Klucze > Dodaj klucz > Utwórz nowy klucz.
  4. Wybierz JSON i kliknij Utwórz.

    Nowa para kluczy publiczny/prywatny zostanie wygenerowana i pobrana na Twoje urządzenie jako nowy plik. Zapisz pobrany plik JSON jako credentials.json w katalogu roboczym. Ten plik jest jedyną kopią tego klucza. Informacje o tym, jak bezpiecznie przechowywać klucz, znajdziesz w sekcji Zarządzanie kluczami konta usługi.

  5. Kliknij Zamknij.

Konfigurowanie przekazywania dostępu w całej domenie dla konta usługi

Aby móc wywoływać interfejsy API w imieniu użytkowników w organizacji Google Workspace, Twoje konto usługi musi otrzymać w konsoli administracyjnej Google Workspace uprawnienia superadministratora w całej domenie. Więcej informacji znajdziesz w artykule Przekazywanie uprawnień do całej domeny kontu usługi.
  1. W konsoli Google Cloud kliknij Menu > Administracja > Konta usługi.

    Otwórz stronę Konta usługi

  2. Wybierz konto usługi.
  3. Kliknij Pokaż ustawienia zaawansowane.
  4. W sekcji „Przekazywanie dostępu w całej domenie” znajdź „Identyfikator klienta” swojego konta usługi. Kliknij Kopiuj , aby skopiować do schowka wartość identyfikatora klienta.
  5. Jeśli masz dostęp superadministratora do odpowiedniego konta Google Workspace, kliknij Wyświetl konsolę administracyjną Google Workspace, a następnie zaloguj się na konto superadministratora i wykonaj te czynności.

    Jeśli nie masz dostępu superadministratora do odpowiedniego konta Google Workspace, skontaktuj się z superadministratorem tego konta i wyślij mu identyfikator klienta Twojego konta usługi oraz listę zakresów OAuth, aby mógł wykonać następujące kroki w konsoli administracyjnej.

    1. W konsoli administracyjnej Google kliknij Menu > Bezpieczeństwo > Dostęp do danych i kontrola nad nimi > Dostęp do interfejsów API.

      Otwórz dostęp do interfejsów API

    2. Kliknij Zarządzaj przekazywaniem dostępu w całej domenie.
    3. Kliknij Dodaj nową.
    4. W polu „Identyfikator klienta” wklej skopiowany wcześniej identyfikator klienta.
    5. W polu „Zakresy protokołu OAuth” wpisz rozdzieloną przecinkami listę zakresów wymaganych przez aplikację. Jest to zestaw zakresów zdefiniowanych podczas konfigurowania ekranu zgody OAuth.
    6. Kliknij Autoryzuj.

Przygotowywanie obszaru roboczego

  1. W katalogu roboczym utwórz nową strukturę projektu:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. Do katalogu src/main/resources/ skopiuj pobrany wcześniej plik credentials.json.

  3. Otwórz domyślny plik build.gradle i zastąp jego zawartość tym kodem:

      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'
    }
    

Konfigurowanie fragmentu

  1. W katalogu src/main/java/ utwórz nowy plik w Javie o nazwie odpowiadającej wartości mainClassName w pliku build.gradle.

  2. Umieść ten kod w nowym pliku w Javie:

    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();
      }
    }
    
    

Uruchamianie przykładowego

  1. Uruchom przykład:

    gradle run
    
  1. Przy pierwszym uruchomieniu przykładu wyświetli się prośba o autoryzację dostępu:
    1. Jeśli wyświetli się prośba, zaloguj się na konto Google. Jeśli w danym momencie korzystasz z wielu kont, wybierz jedno, którego chcesz używać do autoryzacji.
    2. Kliknij Accept (Zaakceptuj).

    Aplikacja w Javie uruchamia i wywołuje interfejs Google Keep API.

    Informacje o autoryzacji są przechowywane w systemie plików, więc przy następnym uruchomieniu przykładowego kodu nie pojawi się prośba o autoryzację.

Dalsze kroki