앞서 언급한 성명에 따르면 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의 문자열 조작 기능을 사용하여 적절히 형식화되었습니다.
지정된 함수를 호출하여 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)를 개발할 때 모든 클라이언트가 액세스할 수 있는 대상으로 변환할 수 있습니다. 또한 이 접근 방식은 파이썬 이외의 언어로 구축된 웹사이트에도 적용할 수 있습니다. 예를 들어 서버 간 인증 애플리케이션을 구축하는 절차는 보편적입니다.