앞서 언급한 성명에 따르면 Zoom은 9월 1일부터 JWT 애플리케이션에 대한 지원을 중단하겠다고 선언했습니다. 따라서 Zoom 미팅을 Python 애플리케이션에 통합한 사용자는 잠재적인 서비스 중단을 방지하기 위해 OAuth 또는 서버 대 서버 OAuth 대안으로 전환해야 합니다.

OAuth 옵션을 구현하려면 사용자가 Zoom 계정을 사용하여 웹사이트를 인증해야 합니다. 그러나 인증이 필수가 아닌 경우에는 서버 간 OAuth 대안이 최적의 선택이 될 수 있습니다.

Python으로 이 작업을 수행하는 방법이 궁금할 수 있습니다.

Zoom 서버 간 OAuth 앱 만들기

시작하려면 Zoom Marketplace 로 이동하여 새 앱을 빌드하세요:

⭐ 앱 목록을 스크롤하여 서버 간 OAuth 배너를 찾습니다. 그런 다음 만들기 버튼을 클릭합니다.

⭐ 제공된 필드에 앱의 이름을 입력합니다. 그런 다음 생성을 클릭하면 다른 페이지로 리디렉션됩니다.

⭐ 계정 ID, 클라이언트 ID, 클라이언트 비밀번호를 포함한 모든 앱 자격 증명을 복사합니다. 완료되면 계속을 클릭합니다. 환경 변수 파일에 붙여넣어 마스킹할 수 있습니다.

⭐ 다음 메뉴에서 기본 정보 필드에 적절한 정보를 입력한 후 계속 버튼을 클릭합니다.

⭐ 다음 페이지에서 계속을 클릭합니다.

⭐ 다음으로 범위 추가를 클릭하고 다음 범위를 추가합니다. 미팅의 인코딩된 SIP URI 가져오기 및 모든 사용자 미팅 보기 및 관리입니다.

⭐ 계속을 클릭합니다. 마지막으로 앱 활성화를 클릭해 서버 간 OAuth 앱을 통해 Zoom API와 상호 작용을 시작합니다.

Zoom 링크 생성을 위한 Python 코드

앞서 언급한 절차가 완료되면 아래 제공된 코드를 통해 Zoom API를 활용하여 미팅 링크를 생성할 수 있습니다.

 import requests

# replace with your client ID
client_id = "<Your client ID>"

# replace with your account ID
account_id = "<Your account ID>"

# replace with your client secret
client_secret = "<Your client secret>"

auth_token_url = "https://zoom.us/oauth/token"
api_base_url = "https://api.zoom.us/v2"

# create the Zoom link function
def create_meeting(topic, duration, start_date, start_time):
        data = {
        "grant_type": "account_credentials",
        "account_id": account_id,
        "client_secret": client_secret
        }
        response = requests.post(auth_token_url,
                                 auth=(client_id, client_secret),
                                 data=data)
        
        if response.status_code!=200:
            print("Unable to get access token")
        response_data = response.json()
        access_token = response_data["access_token"]

        headers = {
            "Authorization": f"Bearer {access_token}",
            "Content-Type": "application/json"
        }
        payload = {
            "topic": topic,
            "duration": duration,
            'start_time': f'{start_date}T10:{start_time}',
            "type": 2
        }

        resp = requests.post(f"{api_base_url}/users/me/meetings",
                             headers=headers,
                             json=payload)
        
        if resp.status_code!=201:
            print("Unable to generate meeting link")
        response_data = resp.json()
        
        content = {
                    "meeting_url": response_data["join_url"],
                    "password": response_data["password"],
                    "meetingTime": response_data["start_time"],
                    "purpose": response_data["topic"],
                    "duration": response_data["duration"],
                    "message": "Success",
                    "status":1
        }
        print(content)

이 코드는 인증 토큰을 얻기 위해 Zoom의 토큰 URL로 HTTP 요청을 전송하여 프로세스를 시작합니다. 그런 다음 이 토큰은 헤더를 통해 전달되어 Zoom의 API와 상호 작용할 때 인증 수단으로 활용됩니다. 그 대가로 API는 시작 시간 등 요청된 미팅에 관한 세부 정보가 포함된 응답을 제공하며, 이는 ISO 8601 표준을 준수하기 위해 의무적으로 요구되는 사항이며 Python의 문자열 조작 기능을 사용하여 적절히 형식화되었습니다.

이 글도 확인해 보세요:  파이썬을 사용하여 FLAMES 게임 플레이하기

지정된 함수를 호출하여 2023년 8월 23일 수요일 18:24에 이벤트를 예약할 수 있습니다.

 create_meeting(
      "Test Zoom Meeting",
      "60",
      "2023-08-23",
      "18:24",
      )

API는 미팅 링크, 비밀번호, ID 등 다양한 데이터 요소와 기타 세부 정보로 구성된 JSON 파일을 생성합니다. “response\_data” 변수를 출력하여 생성된 JSON의 내용을 표시할 수 있으며, 그 후 앞서 설명한 코드와 유사한 기법을 활용하여 필요한 정보를 추출할 수 있습니다.

요청된 출력은 다음과 같은 형식으로 나타납니다:

앱에 Zoom 미팅 통합

이 데모에는 웹사이트나 API에 기술을 통합하는 것이 포함되지는 않지만, 웹 개발을 위해 Django 기반 플랫폼, Flask, FastAPI 또는 다른 Python 프레임워크를 사용하든 관계없이 기존 코드베이스에 솔루션을 원활하게 통합할 수 있습니다.

애플리케이션 프로그래밍 인터페이스(API)를 개발할 때 모든 클라이언트가 액세스할 수 있는 대상으로 변환할 수 있습니다. 또한 이 접근 방식은 파이썬 이외의 언어로 구축된 웹사이트에도 적용할 수 있습니다. 예를 들어 서버 간 인증 애플리케이션을 구축하는 절차는 보편적입니다.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.