Получаем "Не удалось создать встречу ошибка 401 Ошибка клиента: Unauthorized for url: https://api.zoom.us/v2/users/me/meetings"
Я добавил идентификатор клиента и секретный ключ, и если я аутаризирую приложение из postman, оно работает, но как только я пытаюсь пинговать api с помощью моего приложения, оно выдает 401 ошибку.
как я могу авторизовать свое приложение в приложении zoom и создать встречу с динамическим токеном
вот мой код, в котором я получаю ошибку снова и снова
как я могу авторизовать это приложение. как правильно сгенерировать ссылку на встречу динамически.
Это поток OAuth, который используется для авторизации приложений с помощью Zoom и последующего создания встречи
Я создам для вас два представления в Django. Я просмотрел примеры в официальной документации
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('authorize/', views.authorize, name='authorize'),
path('zoom/callback/', views.zoom_callback, name='zoom_callback'),
]
Вставьте их в файл settings.py:
ZOOM_CLIENT_ID = 'Client id'
ZOOM_CLIENT_SECRET = 'Client secret'
и здесь я создал два представления, одно для авторизации:
def authorize(request):
authorization_url = 'https://zoom.us/oauth/authorize'
redirect_uri = 'https://gensproject.supporthives.com/zoom/callback'
return redirect(f"{authorization_url}?response_type=code&client_id={settings.ZOOM_CLIENT_ID}&redirect_uri={redirect_uri}")
и еще один - для обратного вызова (я скопировал ваш код для части создания встречи):
def zoom_callback(request):
code = request.GET.get('code')
if not code:
return JsonResponse({'error': 'No code provided by Zoom'}, status=400)
access_token_url = 'https://zoom.us/oauth/token'
authorization = base64.b64encode(f"{settings.ZOOM_CLIENT_ID}:{settings.ZOOM_CLIENT_SECRET}".encode('utf-8')).decode('utf-8')
access_token_headers = {
'Authorization': f'Basic {authorization}'
}
access_token_params = {
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': 'https://gensproject.supporthives.com/zoom/callback'
}
response = requests.post(access_token_url, headers=access_token_headers, params=access_token_params)
if response.status_code != 200:
return JsonResponse({'error': 'Failed to obtain access token'}, status=500)
access_token = response.json().get('access_token')
# then you can use access token here afterwards to create a Zoom meeting
create_meeting_url = 'https://api.zoom.us/v2/users/me/meetings'
create_meeting_headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json',
}
event_datetime = datetime.combine(event.event_date, datetime.min.time())
start_time_utc = mktime(event_datetime.utctimetuple())
create_meeting_params = {
'topic': event.event_title,
'type': 2, # Scheduled meeting
'start_time': f'{start_time_utc}000',
'duration': 60,
'timezone': 'UTC',
'description': event.event_description,
'settings': {
'host_video': True,
'participant_video': True,
'waiting_room': False,
'join_before_host': True,
'mute_upon_entry': False,
'auto_recording': 'none',
},
}
try:
create_meeting_response = requests.post(create_meeting_url, headers=create_meeting_headers, json=create_meeting_params)
create_meeting_response.raise_for_status()
meeting_link = create_meeting_response.json().get('join_url', '')
event.event_link = meeting_link
event.event_meeting_data = create_meeting_response.json()
event.save()
# return success(201, meeting_link, "Meeting created successfully")
except requests.RequestException as e:
return fail(500 ,'Failed to create meeting error ' + str(e))