Krótkie wprowadzenie do Javy

Utwórz aplikację wiersza poleceń w języku Java, która wysyła żądania do interfejsu Google Chat API.

Przewodniki Szybki start wyjaśniają, jak skonfigurować i uruchomić aplikację, która wywołuje interfejs API Google Workspace. W tym krótkim wprowadzeniu użyjemy uproszczonego podejścia do uwierzytelniania, które jest odpowiednie w środowisku testowym. W przypadku środowiska produkcyjnego zalecamy zapoznanie się z informacjami o uwierzytelnianiu i autoryzacji przed wybraniem danych logowania odpowiednich dla Twojej aplikacji.

W tym przewodniku Szybki start używane są zalecane biblioteki klienta interfejsu API Google Workspace, które obsługują niektóre szczegóły procesu uwierzytelniania i autoryzacji.

Cele

  • skonfigurować środowisko,
  • Skonfiguruj próbkę.
  • Uruchom przykład.

Wymagania wstępne

Konfigurowanie środowiska

Aby ukończyć ten przewodnik, skonfiguruj środowisko.

Włącz API

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

Jeśli do wykonania zadań z tego krótkiego wprowadzenia posłużył Ci nowy projekt Google Cloud, skonfiguruj ekran akceptacji OAuth. Jeśli ten krok został już wykonany w przypadku Twojego projektu w Cloud, przejdź do następnej sekcji.

  1. W konsoli Google Cloud otwórz Menu  > > Branding.

    Otwórz Promowanie marki

  2. Jeśli masz już skonfigurowany , możesz skonfigurować te ustawienia ekranu zgody OAuth w sekcjach Branding, OdbiorcyDostęp do danych. Jeśli zobaczysz komunikat Jeszcze nie skonfigurowano, kliknij Rozpocznij:
    1. W sekcji Informacje o aplikacji w polu Nazwa aplikacji wpisz nazwę aplikacji.
    2. W sekcji Adres e-mail pomocy dla użytkowników wybierz adres e-mail, na który użytkownicy mogą pisać, jeśli mają pytania dotyczące ich zgody.
    3. Kliknij Dalej.
    4. W sekcji Odbiorcy wybierz Wewnętrzny.
    5. Kliknij Dalej.
    6. W sekcji Dane kontaktowe wpisz adres e-mail, na który będziemy wysyłać powiadomienia o wszelkich zmianach w Twoim projekcie.
    7. Kliknij Dalej.
    8. W sekcji Zakończ zapoznaj się z zasadami dotyczącymi danych użytkownika w usługach interfejsów API Google i jeśli je akceptujesz, kliknij Akceptuję zasady dotyczące danych użytkownika w usługach interfejsów API Google.
    9. Kliknij Dalej.
    10. Kliknij Utwórz.
  3. Na razie możesz pominąć dodawanie zakresów. W przyszłości, gdy będziesz tworzyć aplikację do użytku poza organizacją Google Workspace, musisz zmienić Typ użytkownika na Zewnętrzny. Następnie dodaj zakresy autoryzacji wymagane przez aplikację. Więcej informacji znajdziesz w pełnym przewodniku Konfigurowanie zgody OAuth.

Autoryzowanie danych logowania do aplikacji na komputer

Aby uwierzytelniać użytkowników i uzyskiwać dostęp do danych użytkowników w aplikacji, musisz utworzyć co najmniej 1 identyfikator klienta OAuth 2.0. Identyfikator klienta wskazuje konkretną aplikację na serwerach OAuth Google. Jeśli Twoja aplikacja działa na kilku platformach, musisz utworzyć osobny identyfikator klienta dla każdej z nich.
  1. W konsoli Google Cloud otwórz Menu  > > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Aplikacja na komputer.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
  5. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

  6. Zapisz pobrany plik JSON jako credentials.json i przenieś go do katalogu roboczego.

Konfigurowanie aplikacji Google Chat

Aby wywołać interfejs Google Chat API, musisz skonfigurować aplikację Google Chat. W przypadku wszystkich żądań zapisu Google Chat przypisuje aplikację Google Chat w interfejsie za pomocą tych informacji:

  1. W konsoli Google Cloud otwórz stronę Konfiguracja interfejsu Chat API:

    Otwórz stronę konfiguracji interfejsu Chat API

  2. W sekcji Informacje o aplikacji wpisz te informacje:

    1. W polu Nazwa aplikacji wpisz Chat API quickstart app.
    2. W polu Adres URL awatara wpisz https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. W polu Opis wpisz Quickstart for calling the Chat API.
  3. W sekcji Funkcje interaktywne kliknij przełącznik Włącz funkcje interaktywne, aby wyłączyć funkcje interaktywne aplikacji do obsługi czatu.

  4. Kliknij Zapisz.

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. W 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:

    chat/quickstart/build.gradle
    apply plugin: 'java' apply plugin: 'application'  mainClassName = 'ChatQuickstart' sourceCompatibility = 11 targetCompatibility = 11 version = '1.0'  repositories {     mavenCentral() }  dependencies {     implementation 'com.google.auth:google-auth-library-oauth2-http:1.23.0'     implementation 'com.google.api-client:google-api-client:1.33.0'     implementation 'com.google.api.grpc:proto-google-cloud-chat-v1:0.8.0'     implementation 'com.google.api:gax:2.48.1'     implementation 'com.google.cloud:google-cloud-chat:0.1.0'     implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1' }

Konfigurowanie próbki

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

  2. W nowym pliku Java umieść ten kod:

    chat/quickstart/src/main/java/ChatQuickstart.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.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.gax.core.FixedCredentialsProvider; import com.google.auth.Credentials; import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.UserCredentials; import com.google.chat.v1.ChatServiceClient; import com.google.chat.v1.ChatServiceSettings; import com.google.chat.v1.ListSpacesRequest; import com.google.chat.v1.Space; import com.google.protobuf.util.JsonFormat; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Collections; import java.util.Date; import java.util.List;  /* class to demonstrate use of Google Chat API spaces list API */ public class ChatQuickstart {   /** Directory to store authorization tokens for this application. */   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 =       Collections.singletonList("https://www.googleapis.com/auth/chat.spaces.readonly");    /** Global instance of the JSON factory. */   private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();    private static final String CREDENTIALS_FILE_PATH = "/credentials.json";    /**    * Run the OAuth2 flow for local/installed app.    *    * @return An authorized Credential object.    * @throws IOException If the credentials.json file cannot be found.    */   private static Credentials getCredentials() throws Exception {     // Load client secrets.     InputStream credentialsFileInputStream =         ChatQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);     if (credentialsFileInputStream == null) {       throw new FileNotFoundException("Credentials file resource not found.");     }     GoogleClientSecrets clientSecrets =         GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(credentialsFileInputStream));      // Set up authorization code flow.     GoogleAuthorizationCodeFlow flow =         new GoogleAuthorizationCodeFlow.Builder(                 GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, clientSecrets, SCOPES)             // Set these two options to generate refresh token alongside access token.             .setDataStoreFactory(new FileDataStoreFactory(new File(TOKENS_DIRECTORY_PATH)))             .setAccessType("offline")             .build();      // Authorize.     Credential credential =         new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");      // Build and return an authorized Credential object     AccessToken accessToken =         new AccessToken(             credential.getAccessToken(),             new Date(                 // put the actual expiry date of access token here                 System.currentTimeMillis()));     return UserCredentials.newBuilder()         .setAccessToken(accessToken)         .setRefreshToken(credential.getRefreshToken())         .setClientId(clientSecrets.getInstalled().getClientId())         .setClientSecret(clientSecrets.getInstalled().getClientSecret())         .build();   }    public static void main(String... args) throws Exception {     // Override default service settings to supply user credentials.     Credentials credentials = getCredentials();      // Create the ChatServiceSettings with the credentials     ChatServiceSettings chatServiceSettings =         ChatServiceSettings.newBuilder()             .setCredentialsProvider(FixedCredentialsProvider.create(credentials))             .build();      try (ChatServiceClient chatServiceClient = ChatServiceClient.create(chatServiceSettings)) {       ListSpacesRequest request =           ListSpacesRequest.newBuilder()               // Filter spaces by space type (SPACE or GROUP_CHAT or               // DIRECT_MESSAGE).               .setFilter("spaceType = \"SPACE\"")               .build();        // Iterate over results and resolve additional pages automatically.       for (Space response : chatServiceClient.listSpaces(request).iterateAll()) {         System.out.println(JsonFormat.printer().print(response));       }     }   } }

Uruchamianie przykładu

  1. Uruchom przykład:

     gradle run 
  1. Przy pierwszym uruchomieniu przykładu pojawi się prośba o autoryzację dostępu:
    1. Jeśli nie zalogowano się na konto Google, pojawi się prośba o zalogowanie. Jeśli logujesz się na wiele kont, wybierz jedno z nich, aby użyć go do autoryzacji.
    2. Kliknij Akceptuję.

    Aplikacja w Javie działa i wywołuje interfejs Google Chat 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