在這篇部落格文章中,我們將逐步介紹透過使用 Google Calendar API 建立 Google 日曆活動來自動建立 Google Meet 連結的過程。我們將使用服務帳號進行驗證,以便可以代表您的 Google Workspace 網域中的使用者建立活動。
在我們開始之前,請確保您具備以下條件:
您需要一些 Node.js 套件來與 Google API 互動並處理 JWT 簽章:
npm install google-auth-library jsonwebtoken node-fetch
接下來,我們將編寫一個 Node.js 腳本來產生 JWT(JSON Web Token)來驗證服務帳戶。
const fs = require('fs'); const jwt = require('jsonwebtoken'); // Path to your service account JSON file const SERVICE_ACCOUNT_KEY_FILE = '/path/to/your/service-account-key.json'; // Scopes required for the API const SCOPES = ['https://www.googleapis.com/auth/calendar']; // Full calendar access const AUDIENCE = 'https://oauth2.googleapis.com/token'; async function generateJWT() { try { // Read and parse the service account credentials const serviceAccount = JSON.parse(fs.readFileSync(SERVICE_ACCOUNT_KEY_FILE, 'utf8')); // JWT payload const jwtPayload = { iss: serviceAccount.client_email, // Issuer: service account email sub: 'user@example.com', // Subject: email of the user whose calendar to access aud: AUDIENCE, // Audience: Google token URL scope: SCOPES.join(' '), // Scopes: space-separated list of scopes iat: Math.floor(Date.now() / 1000), // Issued at: current time in seconds exp: Math.floor(Date.now() / 1000) + 3600 // Expiration: 1 hour from now }; // Sign the JWT using the service account's private key const signedJwt = jwt.sign(jwtPayload, serviceAccount.private_key, { algorithm: 'RS256' }); console.log('Generated JWT:', signedJwt); } catch (error) { console.error('Error generating JWT:', error); } } generateJWT();
現在,使用 JWT 從 Google 的 OAuth 2.0 令牌端點取得 OAuth 2.0 令牌:
npm install google-auth-library jsonwebtoken node-fetch
使用存取權令牌,我們現在可以建立帶有 Google Meet 連結的 Google 日曆活動。
const fs = require('fs'); const jwt = require('jsonwebtoken'); // Path to your service account JSON file const SERVICE_ACCOUNT_KEY_FILE = '/path/to/your/service-account-key.json'; // Scopes required for the API const SCOPES = ['https://www.googleapis.com/auth/calendar']; // Full calendar access const AUDIENCE = 'https://oauth2.googleapis.com/token'; async function generateJWT() { try { // Read and parse the service account credentials const serviceAccount = JSON.parse(fs.readFileSync(SERVICE_ACCOUNT_KEY_FILE, 'utf8')); // JWT payload const jwtPayload = { iss: serviceAccount.client_email, // Issuer: service account email sub: 'user@example.com', // Subject: email of the user whose calendar to access aud: AUDIENCE, // Audience: Google token URL scope: SCOPES.join(' '), // Scopes: space-separated list of scopes iat: Math.floor(Date.now() / 1000), // Issued at: current time in seconds exp: Math.floor(Date.now() / 1000) + 3600 // Expiration: 1 hour from now }; // Sign the JWT using the service account's private key const signedJwt = jwt.sign(jwtPayload, serviceAccount.private_key, { algorithm: 'RS256' }); console.log('Generated JWT:', signedJwt); } catch (error) { console.error('Error generating JWT:', error); } } generateJWT();
組合所有部分並執行腳本以自動建立 Google Meet 活動。
const fetch = require('node-fetch'); async function getAccessToken(signedJwt) { const response = await fetch('https://oauth2.googleapis.com/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ 'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion': signedJwt }) }); const data = await response.json(); return data.access_token; }
透過上述步驟,您可以使用服務帳戶和網域範圍授權自動建立帶有 Google Meet 連結的 Google 日曆活動。此方法非常適合在 Google Workspace 網域中自動召開會議。
透過啟用網域範圍委派並配置服務帳戶來模擬用戶,您可以以程式設計方式存取和管理 Google 日曆事件,這對於企業環境非常有用。
編碼愉快! ✨
以上是自動建立 Google Meet的詳細內容。更多資訊請關注PHP中文網其他相關文章!