一、學習目標
今天開始進行 Discord Bot 與 Google Calendar 的串接,主要目標是完成 Google Cloud 專案設定、啟用 Google Calendar API,以及建立 OAuth 2.0 用戶端憑證,為後續的使用者授權做準備。
二、實作過程
首先進入 Google Cloud Console,建立名為 Discord-Calendar-Bot 的專案,作為後續串接 Google Calendar API 的開發環境。
接著在 API 程式庫中找到 Google Calendar API 並啟用,讓後續的 Node.js 程式能夠透過 API 與 Google Calendar 進行資料交換。
完成 API 設定後,進入 Google Auth Platform,設定 OAuth 2.0 所需資訊,並將自己的 Google 帳號加入測試使用者名單。
接著建立 Desktop 類型的 OAuth 2.0 用戶端,並下載 JSON 憑證。
將下載的憑證重新命名為 credentials.json,放置於專案根目錄,方便後續 Node.js 程式讀取。
此檔案包含 Client ID、Client Secret 等 OAuth 用戶端資訊,供程式識別所使用的 Google Cloud 應用程式,並在後續授權流程中使用。因此需要將 credentials.json 加入 .gitignore,避免敏感資訊被上傳至 GitHub。
3. 建立 googleAuth.js
在 src 資料夾建立 googleAuth.js,使用 Node.js 讀取 OAuth 憑證。
const { google } = require("googleapis");
const fs = require("fs");
const path = require("path");
const CREDENTIALS_PATH = path.join(__dirname, "../credentials.json");
const credentials = JSON.parse(
fs.readFileSync(CREDENTIALS_PATH, "utf8")
);
其中 path.join() 用來組合檔案路徑,fs.readFileSync() 負責讀取 JSON 檔案,最後透過 JSON.parse() 將內容轉換成 JavaScript 物件。
4. 測試憑證讀取
完成 googleAuth.js 後,為了確認 Node.js 能正確讀取 Google Cloud 下載的 OAuth 憑證,在程式最後加入以下測試程式碼:
console.log("Google OAuth 憑證讀取成功");
console.log("用戶端類型:", credentials.installed ? "Desktop" : "其他");
接著在 VS Code 終端機執行:
執行以下指令:node src/googleAuth.js
終端機成功顯示:
Google OAuth 憑證讀取成功
用戶端類型: Desktop
代表成功確認程式是能正確讀取 OAuth 用戶端憑證。
三、學習心得
今天主要學習 Google Calendar API 的環境設定,以及 OAuth 2.0 的基本概念。
過程中理解到 credentials.json 是用來提供應用程式的身分資訊,並不代表已取得使用者授權。程式仍需要透過 OAuth 2.0 授權流程取得 Token,才能存取 Google Calendar。
目前已完成環境建置與憑證讀取測試。下一天將開始實作 OAuth 2.0 使用者授權流程。