Получаем "Не удалось создать встречу ошибка 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))
            
Вернуться на верх