Panduan memulai Go

Buat aplikasi command line Go yang membuat permintaan ke People API.

Panduan memulai menjelaskan cara menyiapkan dan menjalankan aplikasi yang memanggil Google Workspace API. Panduan memulai ini menggunakan pendekatan autentikasi yang disederhanakan dan sesuai untuk lingkungan pengujian. Untuk lingkungan produksi, sebaiknya pelajari autentikasi dan otorisasi sebelum memilih kredensial akses yang sesuai untuk aplikasi Anda.

Panduan memulai ini menggunakan library klien API yang direkomendasikan Google Workspace untuk menangani beberapa detail alur autentikasi dan otorisasi.

Tujuan

  • Menyiapkan lingkungan Anda.
  • Siapkan contoh.
  • Jalankan sampel.

Prasyarat

  • Domain Google Workspace dengan akses API diaktifkan.
  • Akun Google di domain tersebut dengan hak istimewa administrator.

Menyiapkan lingkungan Anda

Untuk menyelesaikan panduan memulai ini, siapkan lingkungan Anda.

Mengaktifkan API

Sebelum menggunakan Google API, Anda harus mengaktifkannya di project Google Cloud. Anda dapat mengaktifkan satu atau beberapa API dalam satu project Google Cloud.

Jika Anda menggunakan project Google Cloud baru untuk menyelesaikan panduan memulai ini, konfigurasi layar izin OAuth. Jika Anda telah menyelesaikan langkah ini untuk project Cloud, lanjutkan ke bagian berikutnya.

  1. Di Konsol API Google, buka Menu > Google Auth platform > Branding.

    Buka Branding

  2. Jika telah mengonfigurasi platform Google Auth, Anda dapat mengonfigurasi setelan Layar Izin OAuth berikut di Branding, Audiens, dan Akses Data. Jika Anda melihat pesan yang menyatakan Google Auth platform not configured yet, klik Get Started:
    1. Di bagian App Information, di App name, masukkan nama untuk aplikasi.
    2. Di bagian Email dukungan pengguna, pilih alamat email dukungan yang dapat dihubungi pengguna jika mereka memiliki pertanyaan tentang izin mereka.
    3. Klik Berikutnya.
    4. Di bagian Audiens, pilih Internal.
    5. Klik Berikutnya.
    6. Di bagian Informasi Kontak, masukkan Alamat email yang dapat digunakan untuk memberi tahu Anda tentang perubahan apa pun pada project Anda.
    7. Klik Berikutnya.
    8. Di bagian Selesai, tinjau Kebijakan Data Pengguna Layanan Google API dan jika Anda setuju, pilih Saya menyetujui Layanan Google API: Kebijakan Data Pengguna.
    9. Klik Lanjutkan.
    10. Klik Buat.
  3. Untuk saat ini, Anda dapat melewati penambahan cakupan. Pada masa mendatang, saat Anda membuat aplikasi untuk digunakan di luar organisasi Google Workspace, Anda harus mengubah User type menjadi External. Kemudian, tambahkan cakupan otorisasi yang diperlukan aplikasi Anda. Untuk mempelajari lebih lanjut, lihat panduan Mengonfigurasi izin OAuth selengkapnya.

Memberikan otorisasi kredensial untuk aplikasi desktop

Untuk mengautentikasi pengguna akhir dan mengakses data pengguna di aplikasi, Anda harus membuat satu atau beberapa Client ID OAuth 2.0. Client ID digunakan untuk mengidentifikasi aplikasi tunggal ke server OAuth Google. Jika aplikasi Anda berjalan di beberapa platform, Anda harus membuat ID klien terpisah untuk setiap platform.
  1. Di Konsol Google Cloud, buka Menu > Google Auth platform > Clients.

    Buka Klien

  2. Klik Buat Klien.
  3. Klik Application type > aplikasi desktop.
  4. Di kolom Name, ketik nama untuk kredensial. Nama ini hanya ditampilkan di Konsol Google Cloud.
  5. Opsional: Jika aplikasi Anda adalah agen AI yang melakukan tindakan atas nama pengguna, pilih Gunakan klien ini untuk agen yang didukung AI. Jika aplikasi Anda mendukung alur kerja agen AI dan fitur pengguna standar, buat klien OAuth terpisah untuk masing-masing alur kerja dan fitur. Anda tidak dapat mengubah setelan ini setelah membuat klien.
  6. Klik Buat.

    Kredensial yang baru dibuat akan muncul di bagian "OAuth 2.0 Client IDs".

  7. Simpan file JSON yang didownload sebagai credentials.json, lalu pindahkan file ke direktori kerja Anda.

Menyiapkan ruang kerja

  1. Buat direktori kerja:

    mkdir quickstart
    
  2. Ubah ke direktori kerja:

    cd quickstart
    
  3. Lakukan inisialisasi modul baru:

    go mod init quickstart
    
  4. Dapatkan library klien Go People API dan paket OAuth2.0:

    go get google.golang.org/api/people/v1
    go get golang.org/x/oauth2/google
    

Menyiapkan contoh

  1. Di direktori kerja Anda, buat file bernama quickstart.go.

  2. Dalam file tersebut, tempelkan kode berikut:

    people/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/people/v1"
    )
    
    // 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, people.ContactsReadonlyScope)
    	if err != nil {
    		log.Fatalf("Unable to parse client secret file to config: %v", err)
    	}
    	client := getClient(config)
    
    	srv, err := people.NewService(ctx, option.WithHTTPClient(client))
    	if err != nil {
    		log.Fatalf("Unable to create people Client %v", err)
    	}
    
    	r, err := srv.People.Connections.List("people/me").PageSize(10).
    		PersonFields("names,emailAddresses").Do()
    	if err != nil {
    		log.Fatalf("Unable to retrieve people. %v", err)
    	}
    	if len(r.Connections) > 0 {
    		fmt.Print("List 10 connection names:\n")
    		for _, c := range r.Connections {
    			names := c.Names
    			if len(names) > 0 {
    				name := names[0].DisplayName
    				fmt.Printf("%s\n", name)
    			}
    		}
    	} else {
    		fmt.Print("No connections found.")
    	}
    }

Menjalankan contoh

  1. Di direktori kerja Anda, buat dan jalankan contoh:

    go run quickstart.go
    
  1. Saat pertama kali menjalankan contoh, Anda akan diminta untuk mengizinkan akses:
    1. Jika Anda belum login ke Akun Google Anda, login saat diminta. Jika Anda login ke beberapa akun, pilih satu akun yang akan digunakan untuk otorisasi.
    2. Klik Setuju.

    Aplikasi Go Anda berjalan dan memanggil People API.

    Informasi otorisasi disimpan dalam sistem file, sehingga saat Anda menjalankan kode contoh pada lain waktu, Anda tidak akan diminta untuk memberikan otorisasi.

Langkah berikutnya