>웹 프론트엔드 >JS 튜토리얼 >Google Meet 생성 자동화

Google Meet 생성 자동화

DDD
DDD원래의
2025-01-15 20:59:51712검색

Automating Google Meet Creation

Google Calendar API 및 서비스 계정으로 Google Meet 생성 자동화

이 블로그 게시물에서는 Google Calendar API를 사용하여 Google 캘린더 이벤트를 생성하여 Google Meet 링크를 자동으로 생성하는 과정을 살펴보겠습니다. 인증을 위해 서비스 계정을 사용하므로 Google Workspace 도메인의 사용자를 대신하여 이벤트를 생성할 수 있습니다.

전제 조건

시작하기 전에 다음 사항을 확인하세요.

  • Google Calendar API가 활성화된 Google 클라우드 프로젝트
  • 서비스 계정이 생성되고 해당 JSON 키 파일이 다운로드되었습니다.
  • 서비스 계정에 대해 도메인 전체 권한 위임이 활성화되었습니다.
  • Google 관리 콘솔에 액세스하여 필요한 권한을 부여하세요.
  • Node.js 및 API 요청에 대한 기본 지식

Google Meet을 자동으로 만드는 단계

1단계: Google Cloud 프로젝트 설정

  1. Google Cloud Console로 이동하세요.
  2. 새 프로젝트를 만들거나 기존 프로젝트를 선택하세요.
  3. Google 캘린더 API 활성화:
    • 사이드바에서 Calendar API를 검색하여 프로젝트에 활성화하세요.
  4. 서비스 계정 만들기:
    • IAM 및 관리자 섹션에서 새 서비스 계정을 만듭니다.
    • 서비스 계정에 대한 JSON 키를 다운로드하세요.

2단계: 도메인 전체 위임 활성화

  1. Google 관리 콘솔(admin.google.com)으로 이동합니다.
  2. 보안API 제어도메인 전체 위임 관리
  3. 로 이동합니다.
  4. 서비스 계정에 대한 새 클라이언트 ID를 추가합니다.
    • 서비스 계정 아래 Google Cloud Console에서 클라이언트 ID를 찾으세요.
    • Google 캘린더에 액세스하는 데 필요한 서비스 계정의 OAuth 범위를 추가하세요.
      • https://www.googleapis.com/auth/calendar
  5. 도메인의 사용자를 가장할 수 있는 서비스 계정 권한을 부여하세요.

3단계: 필수 패키지 설치

Google API와 상호작용하고 JWT 서명을 처리하려면 몇 가지 Node.js 패키지가 필요합니다.

npm install google-auth-library jsonwebtoken node-fetch

4단계: 인증을 위한 JWT 토큰 생성

다음으로 서비스 계정을 인증하기 위해 JWT(JSON 웹 토큰)를 생성하는 Node.js 스크립트를 작성하겠습니다.

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();

5단계: JWT를 OAuth 2.0 토큰으로 교환

이제 JWT를 사용하여 Google의 OAuth 2.0 토큰 엔드포인트에서 OAuth 2.0 토큰을 얻으세요.

npm install google-auth-library jsonwebtoken node-fetch

6단계: Google Meet 링크로 Google Calendar 이벤트 만들기

이제 액세스 토큰을 사용하여 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();

7단계: 전체 프로세스 실행

모든 부분을 결합하고 스크립트를 실행하면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.