Panduan memulai Node.js

Panduan memulai menjelaskan cara menyiapkan dan menjalankan aplikasi yang memanggil Google Workspace API.

Panduan memulai Google Workspace menggunakan library klien API untuk menangani beberapa detail tentang alur otentikasi dan otorisasi. Sebaiknya Anda menggunakan library klien untuk aplikasi Anda sendiri. Panduan memulai ini menggunakan pendekatan otentikasi yang disederhanakan yang sesuai untuk pengujian lingkungan fleksibel App Engine. Untuk lingkungan produksi, sebaiknya pelajari tentang autentikasi dan otorisasi sebelum memilih kredensial akses yang sesuai untuk aplikasi Anda.

Membuat aplikasi command line Node.js yang membuat permintaan ke API Gmail.

Tujuan

  • Menyiapkan lingkungan Anda.
  • Instal library klien
  • Siapkan contoh.
  • Jalankan contoh.

Prasyarat

Untuk menjalankan panduan memulai ini, Anda memerlukan prasyarat berikut:

  • Akun Google dengan Gmail diaktifkan.

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, konfigurasikan layar izin OAuth dan menambahkan diri Anda sebagai pengguna uji coba. Jika Anda sudah menyelesaikan langkah ini untuk project Cloud Anda, lanjutkan ke bagian berikutnya.

  1. Di konsol Google Cloud, buka Menu > API & Layanan > Layar izin OAuth.

    Buka layar izin OAuth

  2. Untuk Jenis pengguna, pilih Internal, lalu klik Buat.
  3. Lengkapi formulir pendaftaran aplikasi, lalu klik Simpan dan Lanjutkan.
  4. Untuk saat ini, Anda dapat melewati penambahan cakupan, lalu mengklik Simpan dan Lanjutkan. Pada masa mendatang, jika Anda membuat aplikasi untuk digunakan di luar organisasi Google Workspace, Anda harus mengubah Jenis pengguna menjadi Eksternal, lalu menambahkan cakupan otorisasi yang dibutuhkan aplikasi Anda.

  5. Tinjau ringkasan pendaftaran aplikasi Anda. Untuk melakukan perubahan, klik Edit. Jika aplikasi pendaftaran tampak tidak bermasalah, klik Kembali ke Dasbor.

Memberi otorisasi kredensial untuk aplikasi desktop

Untuk mengautentikasi pengguna akhir dan mengakses data pengguna di aplikasi, Anda harus buat satu atau beberapa ID Klien 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 > APIs & Layanan > Kredensial.

    Buka Kredensial

  2. Klik Create Credentials > OAuth client ID.
  3. Klik Jenis aplikasi > Aplikasi desktop.
  4. Di kolom Name, ketik nama untuk kredensial tersebut. Nama ini hanya ditampilkan di Konsol Google Cloud.
  5. Klik Buat. Layar yang dibuat klien OAuth akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  6. Klik Oke. Kredensial yang baru dibuat akan muncul di bagian Client ID OAuth 2.0.
  7. Simpan file JSON yang didownload sebagai credentials.json, lalu pindahkan file ke direktori kerja Anda.

Menginstal library klien

  • Instal library menggunakan npm:

    npm install googleapis@105 @google-cloud/local-auth@2.1.0 --save
    

Menyiapkan contoh

  1. Di direktori kerja, buat file bernama index.js.

  2. Di file tersebut, tempel kode berikut:

    gmail/quickstart/index.js
    const fs = require('fs').promises;
    const path = require('path');
    const process = require('process');
    const {authenticate} = require('@google-cloud/local-auth');
    const {google} = require('googleapis');
    
    // If modifying these scopes, delete token.json.
    const SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'];
    // 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.
    const TOKEN_PATH = path.join(process.cwd(), 'token.json');
    const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');
    
    /**
     * Reads previously authorized credentials from the save file.
     *
     * @return {Promise<OAuth2Client|null>}
     */
    async function loadSavedCredentialsIfExist() {
      try {
        const content = await fs.readFile(TOKEN_PATH);
        const credentials = JSON.parse(content);
        return google.auth.fromJSON(credentials);
      } catch (err) {
        return null;
      }
    }
    
    /**
     * Serializes credentials to a file compatible with GoogleAuth.fromJSON.
     *
     * @param {OAuth2Client} client
     * @return {Promise<void>}
     */
    async function saveCredentials(client) {
      const content = await fs.readFile(CREDENTIALS_PATH);
      const keys = JSON.parse(content);
      const key = keys.installed || keys.web;
      const payload = JSON.stringify({
        type: 'authorized_user',
        client_id: key.client_id,
        client_secret: key.client_secret,
        refresh_token: client.credentials.refresh_token,
      });
      await fs.writeFile(TOKEN_PATH, payload);
    }
    
    /**
     * Load or request or authorization to call APIs.
     *
     */
    async function authorize() {
      let client = await loadSavedCredentialsIfExist();
      if (client) {
        return client;
      }
      client = await authenticate({
        scopes: SCOPES,
        keyfilePath: CREDENTIALS_PATH,
      });
      if (client.credentials) {
        await saveCredentials(client);
      }
      return client;
    }
    
    /**
     * Lists the labels in the user's account.
     *
     * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
     */
    async function listLabels(auth) {
      const gmail = google.gmail({version: 'v1', auth});
      const res = await gmail.users.labels.list({
        userId: 'me',
      });
      const labels = res.data.labels;
      if (!labels || labels.length === 0) {
        console.log('No labels found.');
        return;
      }
      console.log('Labels:');
      labels.forEach((label) => {
        console.log(`- ${label.name}`);
      });
    }
    
    authorize().then(listLabels).catch(console.error);
    

Menjalankan contoh

  1. Dalam direktori kerja Anda, jalankan contoh:

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

    Aplikasi Nodejs Anda berjalan dan memanggil Gmail API.

    Informasi otorisasi disimpan di sistem file, jadi saat berikutnya Anda menjalankan sampel kode, Anda tidak akan diminta untuk melakukan otorisasi.

Langkah berikutnya