Bắt đầu nhanh với Java

Tạo một ứng dụng dòng lệnh Java đưa ra yêu cầu đến Google Keep API.

Hướng dẫn bắt đầu nhanh giải thích cách thiết lập và chạy một ứng dụng gọi một API Google Workspace. Hướng dẫn bắt đầu nhanh này sử dụng một phương pháp xác thực đơn giản phù hợp với môi trường kiểm thử. Đối với môi trường phát hành công khai, bạn nên tìm hiểu về xác thực và uỷ quyền trước khi chọn thông tin đăng nhập để truy cập phù hợp với ứng dụng của bạn.

Hướng dẫn nhanh này sử dụng các thư viện ứng dụng API được đề xuất của Google Workspace để xử lý một số thông tin chi tiết về quy trình xác thực và uỷ quyền.

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 hướng dẫn 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 API của Google, bạn cần bật các API đó trong một dự án Google Cloud. Bạn có thể bật một hoặc nhiều API trong một dự án Google Cloud.
  • Trong Google Cloud Console, hãy bật Google Keep API.

    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à ứng dụng sử dụng, thay vì một người. Bạn có thể sử dụng tài khoản dịch vụ để truy cập vào dữ liệu hoặc thực hiện các thao tác bằng tài khoản rô bốt, hoặc để truy cập vào dữ liệu thay mặt cho người dùng Google Workspace hoặc Cloud Identity. Để biết thêm thông tin, hãy xem bài viết 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 phần Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến phần 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 tài khoản dịch vụ, rồi 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 các tài nguyên của dự án Google Cloud. Để biết thêm thông tin chi tiết, 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 người dùng hoặc nhóm có thể quản lý và thực hiện các thao tác bằng tài khoản dịch vụ này. Để biết thêm thông tin, hãy tham khảo bài viết Quản lý hoạt động 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ụ.

gcloud CLI

  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 các tài nguyên của dự án Google Cloud. Để biết thêm thông tin chi tiết, 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 xác thực 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/khoá riêng tư. Mã thông tin xác thực này được mã của bạn dùng để uỷ quyền cho các thao tác của tài khoản dịch vụ trong ứng dụng.
  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến phần 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 máy của bạn dưới dạng một tệp mới. Lưu tệp JSON đã tải xuống dưới dạng credentials.json trong thư mục đang hoạt động. 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ữ khoá một cách an toàn, hãy xem phần Quản lý khoá tài khoản dịch vụ.

  5. Nhấp vào Close (Đóng).

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

Để gọi API thay 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 của Google Workspace bằng tài khoản quản trị viên cấp cao. Để biết thêm thông tin, hãy xem bài viết Uỷ quyền trên toàn miền cho tài khoản dịch vụ.
  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến phần 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ã ứng dụ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ã nhận dạng khách hàng vào bảng nhớ tạm.
  5. Nếu bạn có quyền truy cập của quản trị viên cấp cao vào 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 tài khoản người dùng quản trị viên cấp cao và tiếp tục làm theo các bước này.

    Nếu bạn không có quyền truy cập của quản trị viên cấp cao vào tài khoản Google Workspace có liên quan, hãy liên hệ với một 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ụ và danh sách các Phạm vi OAuth để họ có thể hoàn tất các bước sau 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 phần Trình đơn > Bảo mật > Quyền truy cập và quyền kiểm soát dữ liệu > Quyền kiểm soát API.

      Chuyển đến phần Kiểm soát API

    2. Nhấp vào Quản lý việc uỷ quyền trên toàn miền.
    3. Nhấp vào Thêm mới.
    4. Trong trường "Client ID" (Mã ứng dụng khách), hãy dán mã ứng dụng khách mà bạn đã sao chép trước đó.
    5. Trong trường "Phạm vi OAuth", hãy nhập danh sách các 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 là cùng một nhóm phạm vi mà bạn đã xác định khi định cấu hình màn hình đồ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 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 thế nội dung của tệp đó bằng đoạn 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 trùng với giá trị mainClassName trong tệp build.gradle.

  2. Thêm đoạn mã sau vào tệp Java mới:

    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. Khi bạn chạy mẫu lần đầu tiên, mẫu sẽ nhắc bạn uỷ quyền truy cập:
    1. Nếu bạn chưa đăng nhập vào Tài khoản Google, 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 việc 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, vì vậy, vào lần tiếp theo chạy mã mẫu, bạn sẽ không được nhắc uỷ quyền.

Các bước tiếp theo