In this blog post, we will walk through the process of automatically creating a Google Meet link by creating a Google Calendar event using the Google Calendar API. We'll use a service account to authenticate, making it possible to create events on behalf of a user in your Google Workspace domain.
Before we get started, make sure you have the following:
You need a few Node.js packages to interact with the Google API and handle JWT signing:
npm install google-auth-library jsonwebtoken node-fetch
Next, we’ll write a Node.js script to generate a JWT (JSON Web Token) to authenticate the service account.
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();
Now, use the JWT to obtain an OAuth 2.0 token from Google’s OAuth 2.0 token endpoint:
npm install google-auth-library jsonwebtoken node-fetch
Using the access token, we can now create a Google Calendar event with a Google Meet link.
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();
Combine all the parts and run the script to create the Google Meet event automatically.
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; }
With the above steps, you can create Google Calendar events with Google Meet links automatically, using a service account and Domain-Wide Delegation of Authority. This method is perfect for automating meetings in a Google Workspace domain.
By enabling Domain-Wide Delegation and configuring the service account to impersonate users, you can access and manage Google Calendar events programmatically, which is extremely useful for enterprise environments.
Happy coding! ✨
The above is the detailed content of Automating Google Meet Creation. For more information, please follow other related articles on the PHP Chinese website!