Panduan memulai Java

Buat aplikasi command line Java yang membuat permintaan ke Google Docs API.

Panduan memulai menjelaskan cara menyiapkan dan menjalankan aplikasi yang memanggil Google Workspace API. Panduan memulai ini menggunakan pendekatan autentikasi yang disederhanakan dan sesuai untuk lingkungan pengujian. Untuk lingkungan produksi, sebaiknya pelajari autentikasi dan otorisasi sebelum memilih kredensial akses yang sesuai untuk aplikasi Anda.

Panduan memulai ini menggunakan library klien API yang direkomendasikan Google Workspace untuk menangani beberapa detail alur autentikasi dan otorisasi.

Tujuan

  • Menyiapkan lingkungan Anda.
  • Menyiapkan contoh.
  • Menjalankan contoh.

Prasyarat

  • Akun Google.

Menyiapkan lingkungan Anda

Untuk menyelesaikan panduan memulai ini, siapkan lingkungan Anda.

Mengaktifkan API

Sebelum menggunakan Google API, Anda harus mengaktifkannya di project Google Cloud. Anda dapat mengaktifkan satu atau beberapa API dalam satu project Google Cloud.

Jika Anda menggunakan project Google Cloud baru untuk menyelesaikan panduan memulai ini, konfigurasikan layar izin OAuth. Jika Anda telah menyelesaikan langkah ini untuk project Cloud Anda, lewati ke bagian berikutnya.

  1. Di Konsol Google API, buka Menu > Platform Google Auth > Branding.

    Buka Branding

  2. Jika telah mengonfigurasi platform Google Auth, Anda dapat mengonfigurasi setelan Layar Izin OAuth berikut di Branding, Audiens, dan Akses Data. Jika Anda melihat pesan yang menyatakan Google Auth platform not configured yet, klik Get Started:
    1. Di bagian App Information, di App name, masukkan nama untuk aplikasi.
    2. Di User support email, pilih alamat email dukungan tempat pengguna dapat menghubungi Anda jika mereka memiliki pertanyaan tentang izin mereka.
    3. Klik Next.
    4. Di bagian Audience, pilih Internal.
    5. Klik Next.
    6. Di bagian Contact Information, masukkan Email address tempat Anda dapat menerima notifikasi tentang perubahan apa pun pada project Anda.
    7. Klik Next.
    8. Di bagian Finish, tinjau Kebijakan Data Pengguna Layanan Google API dan jika Anda setuju, pilih I agree to the Google API Services: User Data Policy.
    9. Klik Continue.
    10. Klik Create.
  3. Untuk saat ini, Anda dapat melewati penambahan cakupan. Pada masa mendatang, saat membuat aplikasi untuk digunakan di luar organisasi Google Workspace Anda, Anda harus mengubah User type menjadi External. Kemudian, tambahkan cakupan otorisasi yang diperlukan aplikasi Anda. Untuk mempelajari lebih lanjut, lihat panduan lengkap Mengonfigurasi izin OAuth guide.

Mengotorisasi kredensial untuk aplikasi desktop

Untuk mengautentikasi pengguna akhir dan mengakses data pengguna di aplikasi Anda, Anda harus membuat satu atau beberapa Client ID OAuth 2.0. Client ID digunakan untuk mengidentifikasi aplikasi tunggal ke server OAuth Google. Jika aplikasi Anda berjalan di beberapa platform, Anda harus membuat client ID terpisah untuk setiap platform.
  1. Di Konsol Google Cloud, buka Menu > Platform Google Auth > Clients.

    Buka Klien

  2. Klik Create Client.
  3. Klik Application type > Desktop app.
  4. Di kolom Name, ketik nama untuk kredensial tersebut. Nama ini hanya ditampilkan di Konsol Google Cloud.
  5. Klik Create.

    Kredensial yang baru dibuat akan muncul di bagian "Client ID OAuth 2.0".

  6. Simpan file JSON yang didownload sebagai credentials.json, lalu pindahkan file tersebut ke direktori kerja Anda.

Menyiapkan ruang kerja

  1. Di direktori kerja Anda, buat struktur project baru:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. Di direktori src/main/resources/, salin file credentials.json yang sebelumnya Anda download.

  3. Buka file build.gradle default dan ganti kontennya dengan kode berikut:

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

Menyiapkan contoh

  1. Di direktori src/main/java/, buat file Java baru dengan nama yang cocok dengan nilai mainClassName di file build.gradle Anda.

  2. Sertakan kode berikut dalam file Java baru Anda:

    docs/quickstart/src/main/java/DocsQuickstart.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.docs.v1.Docs;
    import com.google.api.services.docs.v1.DocsScopes;
    import com.google.api.services.docs.v1.model.Document;
    
    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;
    
    /* class to demonstrate use of Docs get documents API */
    public class DocsQuickstart {
      /**
       * Application name.
       */
      private static final String APPLICATION_NAME = "Google Docs API Java Quickstart";
      /**
       * Global instance of the JSON factory.
       */
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      /**
       * Directory to store authorization tokens for this application.
       */
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
      private static final String DOCUMENT_ID = "195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE";
    
      /**
       * 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(DocsScopes.DOCUMENTS_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 = DocsQuickstart.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();
        Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
        //returns an authorized Credential object.
        return credential;
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Docs service = new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();
    
        // Prints the title of the requested doc:
        // https://docs.google.com/document/d/195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE/edit
        Document response = service.documents().get(DOCUMENT_ID).execute();
        String title = response.getTitle();
    
        System.out.printf("The title of the doc is: %s\n", title);
      }
    }

Menjalankan contoh

  1. Jalankan contoh:

    gradle run
    
  1. Saat pertama kali dijalankan, contoh aplikasi meminta Anda untuk mengotorisasi akses:
    1. Jika belum login ke Akun Google Anda, login saat diminta. Jika Anda login ke beberapa akun, pilih satu akun yang akan digunakan untuk otorisasi.
    2. Klik Accept.

    Aplikasi Java Anda berjalan dan memanggil Google Docs API.

    Informasi otorisasi disimpan dalam sistem file, sehingga saat Anda menjalankan kode contoh pada lain waktu, Anda tidak akan diminta otorisasi.

Langkah berikutnya