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

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 API Google Workspace.

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

Tạo một ứ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

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

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

Để hoàn tất quá 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 những API đó 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 trên Google Cloud.
  • Trong bảng điều khiển Google Cloud, 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 được ứng dụng sử dụng chứ không phải cá nhân. 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 robot, 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 Trình đơn > IAM và Quản trị viên > 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ấp quyền truy cập vào các tài nguyên trong dự án Google Cloud của bạn. Để 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 bằng 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ý mạo danh tài khoản dịch vụ.
  7. Nhấp vào Xong. Ghi lại địa chỉ email cho 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ấp quyền truy cập vào các tài nguyên trong dự án Google Cloud của bạn. Để 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 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/riêng tư. Các thông tin xác thực này được mã của bạn sử dụng để cho phép các hành động trong 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ị viên > 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 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 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ữ an toàn khoá của bạn, hãy xem bài viết 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 một tài khoản dịch vụ

Để thay mặt người dùng trong một tổ chức Google Workspace gọi API, tài khoản dịch vụ của bạn cần được một tài khoản quản trị viên cấp cao 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. Để biết thêm thông tin, xem phần Uỷ 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ị viên > 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ác tuỳ chọn 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 liên quan, hãy nhấp vào phần 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 rồi 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, 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ụ cũng như danh sách 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 Trình đơn > Bảo mật > Truy cập và kiểm soát dữ liệu > Các tuỳ chọn kiểm soát API.

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

    2. Nhấp vào Quản lý uỷ quyền trên toàn miền.
    3. Nhấp vào Thêm mới.
    4. Trong trường "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 cũng 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 của bạn, 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 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. Khi chạy mẫu lần đầu tiên, 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 để 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