Bắt đầu nhanh

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 một ứng dụng dòng lệnh Go để gửi yêu cầu đến API Google Trang tính.

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.

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 Trang tính.

    Bật API

Nếu bạn đang dùng một dự án mới trên Google Cloud để hoàn tất quy trình bắt đầu nhanh này, hãy định cấu hình màn hình xin phép bằng OAuth và thêm chính bạn làm người dùng thử nghiệm. Nếu bạn đã đã hoàn thành bước này cho dự án Cloud của bạn, hãy chuyển sang phần tiếp theo.

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và Dịch vụ > Màn hình xin phép bằng OAuth.

    Chuyển đến màn hình xin phép bằng OAuth

  2. Đối với Loại người dùng, hãy chọn Nội bộ, rồi nhấp vào Tạo.
  3. Hoàn tất biểu mẫu đăng ký ứng dụng, sau đó nhấp vào Lưu và tiếp tục.
  4. Hiện tại, bạn có thể bỏ qua bước thêm phạm vi rồi nhấp vào Lưu và tiếp tục. Trong tương lai, khi bạn tạo một ứng dụng để sử dụng bên ngoài Nếu là tổ chức Google Workspace, bạn phải thay đổi Loại người dùng thành Bên ngoài, sau đó thêm phạm vi uỷ quyền mà ứng dụng của bạn yêu cầu.

  5. Xem lại thông tin tóm tắt về gói đăng ký ứng dụng của bạn. Để chỉnh sửa, hãy nhấp vào Chỉnh sửa. Nếu ứng dụng có vẻ ổn, hãy nhấp vào Quay lại trang tổng quan.

Cấp thông tin đăng nhập cho ứng dụng dành cho máy tính

Để xác thực người dùng cuối và truy cập vào dữ liệu người dùng trong ứng dụng của mình, bạn cần phải tạo một hoặc nhiều Mã ứng dụng khách OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng vào máy chủ OAuth của Google. Nếu ứng dụng của bạn chạy trên nhiều nền tảng, bạn phải tạo một mã ứng dụng khách riêng cho từng nền tảng.
  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và Dịch vụ > Thông tin xác thực.

    Chuyển đến phần Thông tin xác thực

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > Ứng dụng dành cho máy tính.
  4. Trong trường Tên, nhập tên cho thông tin đăng nhập. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Nhấp vào Tạo. Màn hình OAuth do ứng dụng tạo sẽ xuất hiện, cho biết Mã ứng dụng khách và Mật khẩu ứng dụng mới của bạn.
  6. Nhấp vào OK. Thông tin đăng nhập mới được tạo sẽ xuất hiện trong phần Mã ứng dụng OAuth 2.0.
  7. Lưu tệp JSON đã tải xuống dưới dạng credentials.json và di chuyển vào thư mục đang làm việc của bạn.

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

  1. Tạo một thư mục đang hoạt động:

    mkdir quickstart
    
  2. Chuyển sang thư mục đang hoạt động:

    cd quickstart
    
  3. Khởi chạy mô-đun mới:

    go mod init quickstart
    
  4. Tải thư viện ứng dụng Google Trang tính API Go và gói OAuth2.0:

    go get google.golang.org/api/sheets/v4
    go get golang.org/x/oauth2/google
    

Thiết lập mẫu

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên quickstart.go.

  2. Trong tệp đó, hãy dán mã sau:

    sheets/quickstart/quickstart.go
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    
    	"golang.org/x/oauth2"
    	"golang.org/x/oauth2/google"
    	"google.golang.org/api/option"
    	"google.golang.org/api/sheets/v4"
    )
    
    // Retrieve a token, saves the token, then returns the generated client.
    func getClient(config *oauth2.Config) *http.Client {
    	// The file token.json stores the user's access and refresh tokens, and is
    	// created automatically when the authorization flow completes for the first
    	// time.
    	tokFile := "token.json"
    	tok, err := tokenFromFile(tokFile)
    	if err != nil {
    		tok = getTokenFromWeb(config)
    		saveToken(tokFile, tok)
    	}
    	return config.Client(context.Background(), tok)
    }
    
    // Request a token from the web, then returns the retrieved token.
    func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
    	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
    	fmt.Printf("Go to the following link in your browser then type the " 
    		"authorization code: \n%v\n", authURL)
    
    	var authCode string
    	if _, err := fmt.Scan(&authCode); err != nil {
    		log.Fatalf("Unable to read authorization code: %v", err)
    	}
    
    	tok, err := config.Exchange(context.TODO(), authCode)
    	if err != nil {
    		log.Fatalf("Unable to retrieve token from web: %v", err)
    	}
    	return tok
    }
    
    // Retrieves a token from a local file.
    func tokenFromFile(file string) (*oauth2.Token, error) {
    	f, err := os.Open(file)
    	if err != nil {
    		return nil, err
    	}
    	defer f.Close()
    	tok := &oauth2.Token{}
    	err = json.NewDecoder(f).Decode(tok)
    	return tok, err
    }
    
    // Saves a token to a file path.
    func saveToken(path string, token *oauth2.Token) {
    	fmt.Printf("Saving credential file to: %s\n", path)
    	f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
    	if err != nil {
    		log.Fatalf("Unable to cache oauth token: %v", err)
    	}
    	defer f.Close()
    	json.NewEncoder(f).Encode(token)
    }
    
    func main() {
    	ctx := context.Background()
    	b, err := os.ReadFile("credentials.json")
    	if err != nil {
    		log.Fatalf("Unable to read client secret file: %v", err)
    	}
    
    	// If modifying these scopes, delete your previously saved token.json.
    	config, err := google.ConfigFromJSON(b, "https://www.googleapis.com/auth/spreadsheets.readonly")
    	if err != nil {
    		log.Fatalf("Unable to parse client secret file to config: %v", err)
    	}
    	client := getClient(config)
    
    	srv, err := sheets.NewService(ctx, option.WithHTTPClient(client))
    	if err != nil {
    		log.Fatalf("Unable to retrieve Sheets client: %v", err)
    	}
    
    	// Prints the names and majors of students in a sample spreadsheet:
    	// https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
    	spreadsheetId := "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
    	readRange := "Class Data!A2:E"
    	resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
    	if err != nil {
    		log.Fatalf("Unable to retrieve data from sheet: %v", err)
    	}
    
    	if len(resp.Values) == 0 {
    		fmt.Println("No data found.")
    	} else {
    		fmt.Println("Name, Major:")
    		for _, row := range resp.Values {
    			// Print columns A and E, which correspond to indices 0 and 4.
    			fmt.Printf("%s, %s\n", row[0], row[4])
    		}
    	}
    }
    

Chạy mẫu

  1. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    go run quickstart.go
    
  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 Go của bạn chạy và gọi API Google Trang tính.

    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