Hướng dẫn bắt đầu nhanh về Java

Quickstarts giải thích cách thiết lập và chạy một ứng dụng gọi API Google Workspace.

Tính năng bắt đầu nhanh của Google Workspace sử dụng các thư viện ứng dụng API để xử lý một số thông tin chi tiết về quy trình xác thực và uỷ quyền. Bạn nên bạn sử dụng thư viện ứng dụng cho ứng dụng của riêng mình. Bước bắt đầu nhanh này sử dụng phương pháp xác thực đơn giản, phù hợp cho thử nghiệm môi trường. Đối với môi trường sản xuất, bạn nên tìm hiểu về xác thực và uỷ quyền trước chọn thông tin đăng nhập phù hợp với ứng dụng của bạn.

Tạo ứng dụng dòng lệnh Java để gửi yêu cầu đến API Google Keep.

Mục tiêu

  • Thiết lập môi trường.
  • Thiết lập mẫu.
  • Chạy mẫu.

Điều kiện tiên quyết

  • Một Tài khoản Google đã bật Google Keep.

Thiết lập môi trường

Để hoàn tất quy trình bắt đầu nhanh này, hãy thiết lập môi trường của bạn.

Bật API

Trước khi sử dụng các API của Google, bạn cần bật các API này trong một dự án trên Google Cloud. Bạn có thể bật một hoặc nhiều API trong một dự án Google Cloud.
  • Trong bảng điều khiển Google Cloud, hãy bật API Google Keep.

    Bật API

Tạo một tài khoản dịch vụ

Tài khoản dịch vụ là một loại tài khoản đặc biệt mà một ứng dụng sử dụng, thay vì hơn một người. Bạn có thể sử dụng tài khoản dịch vụ để truy cập dữ liệu hoặc thực hiện hành động thông qua tài khoản robot hoặc truy cập vào dữ liệu thay mặt cho Google Workspace hoặc người dùng Cloud Identity. Để biết thêm thông tin, hãy xem Tìm hiểu về tài khoản dịch vụ.

bảng điều khiển Google Cloud

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến trang Tài khoản dịch vụ

  2. Nhấp vào Tạo tài khoản dịch vụ.
  3. Điền thông tin chi tiết về tài khoản dịch vụ, sau đó nhấp vào Tạo và tiếp tục.
  4. Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ của bạn để cấp quyền truy cập vào tài nguyên của dự án Google Cloud. Để biết thêm thông tin, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.
  5. Nhấp vào Tiếp tục.
  6. Không bắt buộc: Nhập những người dùng hoặc nhóm có thể quản lý và thực hiện hành động với tài khoản dịch vụ này. Để biết thêm thông tin chi tiết, hãy tham khảo bài viết Quản lý hành vi mạo danh tài khoản dịch vụ.
  7. Nhấp vào Xong. Ghi lại địa chỉ email của tài khoản dịch vụ.

Giao diện dòng lệnh (CLI) của gcloud

  1. Tạo tài khoản dịch vụ:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ của bạn để cấp quyền truy cập vào tài nguyên của dự án Google Cloud. Để biết thêm thông tin, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.

Tạo thông tin đăng nhập cho tài khoản dịch vụ

Bạn cần lấy thông tin đăng nhập dưới dạng một cặp khoá công khai/riêng tư. Các thông tin đăng nhập được mã của bạn sử dụng để cho phép thực hiện các hành động đối với tài khoản dịch vụ trong ứng dụng của bạn.
  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến trang Tài khoản dịch vụ

  2. Chọn tài khoản dịch vụ của bạn.
  3. Nhấp vào Khoá > Thêm khoá > Tạo khoá mới.
  4. Chọn JSON, rồi nhấp vào Tạo.

    Cặp khoá công khai/riêng tư mới của bạn sẽ được tạo và tải xuống dưới dạng tệp mới. Lưu tệp JSON đã tải xuống dưới dạng credentials.json trong thư mục đang làm việc. Tệp này là bản sao duy nhất của khoá này. Để biết thông tin về cách lưu trữ chìa khoá của bạn một cách an toàn, hãy xem Quản lý khoá tài khoản dịch vụ.

  5. Nhấp vào Đóng.

Thiết lập tính năng uỷ quyền trên toàn miền cho một tài khoản dịch vụ

Cách gọi API thay mặt cho người dùng trong một tổ chức Google Workspace: tài khoản dịch vụ của bạn cần được cấp quyền uỷ quyền trên toàn miền trong Bảng điều khiển dành cho quản trị viên Google Workspace thông qua một tài khoản quản trị viên cấp cao. Để biết thêm thông tin, xem Uỷ quyền quyền trên toàn miền cho một tài khoản dịch vụ.
  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến trang Tài khoản dịch vụ

  2. Chọn tài khoản dịch vụ của bạn.
  3. Nhấp vào Hiển thị cài đặt nâng cao.
  4. Trong phần "Uỷ quyền trên toàn miền", hãy tìm "Mã khách hàng" của tài khoản dịch vụ. Nhấp vào biểu tượng Sao chép để sao chép giá trị mã ứng dụng khách vào bảng nhớ tạm.
  5. Nếu bạn có quyền quản trị viên cấp cao đối với tài khoản Google Workspace có liên quan, hãy nhấp vào Xem Bảng điều khiển dành cho quản trị viên Google Workspace, sau đó đăng nhập bằng người dùng quản trị viên cấp cao tài khoản và tiếp tục làm theo các bước sau.

    Nếu bạn không có quyền quản trị viên cấp cao đối với tài khoản Google Workspace có liên quan, liên hệ với quản trị viên cấp cao của tài khoản đó và gửi cho họ Mã ứng dụng khách của tài khoản dịch vụ của bạn và danh sách Phạm vi OAuth để họ có thể hoàn tất các bước sau đây trong Bảng điều khiển dành cho quản trị viên.

    1. Trong Bảng điều khiển dành cho quản trị viên của Google, hãy chuyển đến Trình đơn > Bảo mật > Truy cập và kiểm soát dữ liệu > Các chế độ kiểm soát API.

      Chuyển đến các chế độ kiểm soát API

    2. Nhấp vào Quản lý tính năng uỷ quyền trên toàn miền.
    3. Nhấp vào Thêm mới.
    4. Trong cột "Mã ứng dụng khách" , hãy dán ID ứng dụng khách mà bạn đã sao chép trước đó.
    5. Trong phần "Phạm vi của OAuth" nhập danh sách phạm vi được phân tách bằng dấu phẩy mà ứng dụng của bạn yêu cầu. Đây chính là nhóm phạm vi mà bạn đã xác định khi định cấu hình màn hình xin phép bằng OAuth.
    6. Nhấp vào Uỷ quyền.

Chuẩn bị không gian làm việc

  1. Trong thư mục đang làm việc, hãy tạo một cấu trúc dự án mới:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. Trong thư mục src/main/resources/, hãy sao chép tệp credentials.json mà bạn đã tải xuống trước đó.

  3. Mở tệp build.gradle mặc định rồi thay nội dung của tệp đó bằng mã sau:

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

Thiết lập mẫu

  1. Trong thư mục src/main/java/, hãy tạo một tệp Java mới có tên là khớp với giá trị mainClassName trong tệp build.gradle của bạn.

  2. Đưa mã sau vào tệp Java mới của bạn:

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

Chạy mẫu

  1. Chạy mẫu:

    gradle run
    
  1. Trong lần đầu chạy mẫu, bạn sẽ được nhắc cấp quyền truy cập:
    1. Nếu bạn chưa đăng nhập vào Tài khoản Google của mình, hãy đăng nhập khi được nhắc. Nếu bạn đã đăng nhập vào nhiều tài khoản, hãy chọn một tài khoản để dùng cho lệnh uỷ quyền.
    2. Nhấp vào Chấp nhận.

    Ứng dụng Java của bạn chạy và gọi API Google Keep.

    Thông tin uỷ quyền được lưu trữ trong hệ thống tệp nên lần tiếp theo bạn chạy mẫu bạn sẽ không được nhắc uỷ quyền.

Các bước tiếp theo