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

Phầ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.

Các hướng dẫn nhanh về Google Workspace sử dụng 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 sử dụng thư viện ứng dụng cho các ứng dụng của riêng mình. Phần bắt đầu nhanh này sử dụng phương pháp xác thực đơn giản phù hợp với môi trường thử nghiệm. Đối với môi trường phát hành công khai, bạn nên tìm hiểu về quy trình 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 hướng dẫn 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 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à ứ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 dữ liệu hoặc thực hiện hành động bằng tài khoản rô-bốt, hoặc để thay mặt người dùng Google Workspace hoặc Cloud Identity truy cập dữ liệu. Để 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 Google Cloud Console, hãy chuyển đến Trình đơn > IAM & Quản trị > Tài khoản dịch vụ.

    Chuyển đế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 chi tiết về 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ấ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 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 hành động 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ý 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 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 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 xác thực ở dạng cặp khoá công khai/riêng tư. Mã của bạn sử dụng các thông tin xác thực này để uỷ quyền cho các hành động của tài khoản dịch vụ trong ứng dụng.
  1. Trong Google Cloud Console, hãy chuyển đến Trình đơn > IAM & Quản trị > Tài khoản dịch vụ.

    Chuyển đế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 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ụ

Để 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 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, hãy xem bài viết Uỷ quyền quyền trên toàn miền cho tài khoản dịch vụ.
  1. Trong Google Cloud Console, hãy chuyển đến Trình đơn > IAM & Quản trị > Tài khoản dịch vụ.

    Chuyển đế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ã ứng dụng 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 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ị cấp cao đối với tài khoản Google Workspace có liên quan, hãy 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 của tài khoản dịch vụ và 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 > Quyền truy cập và kiểm soát dữ liệu > Chế độ kiểm soát API.

      Chuyển đến phần Chế độ 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 "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 mà ứng dụng của bạn yêu cầu, được phân tách bằng dấu phẩy. Đây cũng là tập hợp các 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 hoạt động, 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 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.

  2. Đưa 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. Lần đầu tiên chạy mẫu, bạn sẽ được nhắc 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 để sử 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 sẽ 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, lần tiếp theo bạn chạy mã mẫu, bạn sẽ không được nhắc uỷ quyền.

Các bước tiếp theo