Node.js 快速入門導覽課程

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

快速入門導覽課程會說明如何設定並執行會呼叫 Google Workspace API 的應用程式。

Google Workspace 快速入門導覽課程會使用 API 用戶端程式庫處理驗證和授權流程的部分細節。建議您在自己的應用程式中使用用戶端程式庫。每個快速入門導覽課程都必須啟用驗證和授權,才能執行範例應用程式。如果您不熟悉 Google Workspace API 的驗證和授權,請參閱驗證和授權總覽

建立 Node.js 指令列應用程式,向 Google Drive API 發出要求。

目標

  • 設定環境。
  • 安裝用戶端程式庫。
  • 設定範例。
  • 執行範例。

必要條件

如要執行本快速入門導覽課程,您必須符合以下條件:

  • 已啟用 Google 雲端硬碟的 Google 帳戶。

設定環境

如要完成本快速入門導覽課程,請設定您的環境。

啟用 API

您必須先在 Google Cloud 專案中啟用 Google API,才能使用 Google API。您可以在單一 Google Cloud 專案中啟用一或多個 API。
  • 在 Google Cloud 控制台啟用 Google Drive API。

    啟用 API

為電腦版應用程式授權憑證

如要以使用者的身分進行驗證,並存取應用程式中的使用者資料,您必須建立一或多個 OAuth 2.0 用戶端 ID。用戶端 ID 可讓 Google 的 OAuth 伺服器識別單一應用程式。如果您的應用程式是在多個平台中運作,您必須為每個平台分別建立用戶端 ID。
  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > [API 和服務] > [憑證]

    前往「憑證」

  2. 依序按一下 [建立憑證] > [OAuth 用戶端 ID]
  3. 依序按一下 [應用程式類型] > [電腦版應用程式]
  4. 在 [名稱] 欄位中輸入憑證的名稱。這個名稱只會出現在 Google Cloud 控制台中。
  5. 按一下「建立」,畫面上會顯示 OAuth 用戶端建立的畫面,其中顯示新的用戶端 ID 和用戶端密鑰。
  6. 按一下「OK」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。
  7. 將下載的 JSON 檔案儲存為 credentials.json,然後將檔案移至工作目錄。

安裝用戶端程式庫

  • 使用 npm 安裝程式庫:

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

設定範例

  1. 在工作目錄中建立名為 index.js 的檔案。

  2. 在檔案中貼上下列程式碼:

    drive/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/drive.metadata.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 comptible 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 names and IDs of up to 10 files.
     * @param {OAuth2Client} authClient An authorized OAuth2 client.
     */
    async function listFiles(authClient) {
      const drive = google.drive({version: 'v3', auth: authClient});
      const res = await drive.files.list({
        pageSize: 10,
        fields: 'nextPageToken, files(id, name)',
      });
      const files = res.data.files;
      if (files.length === 0) {
        console.log('No files found.');
        return;
      }
    
      console.log('Files:');
      files.map((file) => {
        console.log(`${file.name} (${file.id})`);
      });
    }
    
    authorize().then(listFiles).catch(console.error);

執行範例

  1. 在工作目錄中執行範例:

    node .
    
  2. 首次執行範例時,系統會提示您授予存取權:

    1. 如果您尚未登入 Google 帳戶,系統會提示您登入帳戶。如果您登入多個帳戶,請選取一個要授權的帳戶。
    2. 然後點選 [Accept]

    授權資訊會儲存在檔案系統中,因此當您下次執行程式碼範例時,系統不會提示您授權。

您已成功建立第一個 Nodejs 應用程式,向 Google Drive API 發出要求。

後續步驟