iT邦幫忙

0

Day 11|Google Calendar API 與 OAuth 2.0 環境設定

  • 分享至 

  • xImage
  •  

一、學習目標

今天開始進行 Discord Bot 與 Google Calendar 的串接,主要目標是完成 Google Cloud 專案設定、啟用 Google Calendar API,以及建立 OAuth 2.0 用戶端憑證,為後續的使用者授權做準備。

二、實作過程

二、實作過程

1. 建立 Google Cloud 專案與啟用 API

首先進入 Google Cloud Console,建立名為 Discord-Calendar-Bot 的專案,作為後續串接 Google Calendar API 的開發環境。
https://ithelp.ithome.com.tw/upload/images/20261012/20184393XRV8QH0j6l.png

接著在 API 程式庫中找到 Google Calendar API 並啟用,讓後續的 Node.js 程式能夠透過 API 與 Google Calendar 進行資料交換。
https://ithelp.ithome.com.tw/upload/images/20261012/20184393nk0PMkPAAz.png

2. 設定 OAuth 2.0 與下載憑證

完成 API 設定後,進入 Google Auth Platform,設定 OAuth 2.0 所需資訊,並將自己的 Google 帳號加入測試使用者名單。
https://ithelp.ithome.com.tw/upload/images/20261012/20184393qd6vzdSGDu.png
接著建立 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
https://ithelp.ithome.com.tw/upload/images/20261012/20184393BHfmnhFhwy.png

終端機成功顯示:
Google OAuth 憑證讀取成功
用戶端類型: Desktop

代表成功確認程式是能正確讀取 OAuth 用戶端憑證。

三、學習心得

今天主要學習 Google Calendar API 的環境設定,以及 OAuth 2.0 的基本概念。

過程中理解到 credentials.json 是用來提供應用程式的身分資訊,並不代表已取得使用者授權。程式仍需要透過 OAuth 2.0 授權流程取得 Token,才能存取 Google Calendar。

目前已完成環境建置與憑證讀取測試。下一天將開始實作 OAuth 2.0 使用者授權流程。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言