Error fetching user info: 401, {"code":124,"message":"Invalid access token."}

i use this code
import requests
import base64

Your Zoom app credentials

ACOUNT_ID =
CLIENT_ID =
CLIENT_SECRET =

def get_access_token():
3 url = oauth/token
headers = {
“Authorization”: f"Basic {base64.b64encode(f’{CLIENT_ID}:{CLIENT_SECRET}'.encode()).decode()}"
}
params = {
“grant_type”: “client_credentials”
}
response = requests.post(url, headers=headers, params=params)
if response.status_code == 200:
return response.json()[“access_token”]
else:
print(“Error obtaining access token:”, response.json())
return None

Step 3: Use Access Token to Get Meeting Information

access_token = get_access_token()
print(f" acess token = {access_token}")

Example to fetch user information (as an admin)

#user_url = “v2/users/me”

if access_token:
headers = {
‘Authorization’: f’Bearer {access_token}',
‘Content-Type’: ‘application/json’,
}

response = requests.get(user_url, headers=headers)

if response.status_code == 200:
    user_info = response.json()
    print("User Information:", user_info)
else:
    print(f"Error fetching user info: {response.status_code}, {response.text}")

i get a looking good acess token but in the second request i get
Error fetching user info: 401, {“code”:124,“message”:“Invalid access token.”}

i have all this scope
user:read:list_users:admin user:write:user:admin user:read:user:admin user:update:user:admin user:delete:user:admin user:update:status:admin user:update:password:admin user:read:list_assistants:admin user:write:assistant:admin user:delete:assistant:admin user:write:profile_picture:admin user:read:token:admin user:read:zak:admin user:delete:token:admin user:read:list_permissions:admin user:read:list_schedulers:admin user:delete:scheduler:admin user:update:email:admin user:read:email:admin user:read:pm_room:admin user:update:presence_status:admin user:read:settings:admin user:update:settings:admin user:write:virtual_background_files:admin user:delete:virtual_background_files:admin user:read:summary:admin user:write:feature:admin user:read:list_collaboration_devices:admin user:read:collaboration_device:admin user:update:user_account:admin user:read:presence_status:admin user:read:personal_note:admin user:delete:profile_picture:admin user:read:clocked_out_user:admin user:read:clocked_in_user:admin user:read:meeting_template_detail:admin user:read:list_users:master user:write:user:master user:read:user:master user:update:user:master user:delete:user:master user:update:status:master user:update:password:master user:read:list_assistants:master user:write:assistant:master user:delete:assistant:master user:write:profile_picture:master user:read:token:master user:delete:token:master user:read:list_permissions:master user:read:list_schedulers:master user:delete:scheduler:master user:update:email:master user:update:presence_status:master user:read:settings:master user:update:settings:master user:write:virtual_background_files:master user:delete:virtual_background_files:master user:read:summary:master user:write:feature:master user:update:user_account:master user:read:presence_status:master user:read:personal_note:master user:delete:profile_picture:master user:read:clocked_out_user:master user:read:clocked_in_user:master meeting:read:list_meetings:admin meeting:read:alert:admin meeting:read:chat_message:admin billing:read:user_entitlement:admin

the url is without the base url becuse i url and this website blocking url

@porat216 ,

heres a sample code in python to get access token

import requests
import base64
import os
from dotenv import load_dotenv


# Load environment variables from .env file, this will try to load these values from your .env file
load_dotenv()


# Access the environment variables
s2s_oauth_client_secret = os.getenv("S2S_OAUTH_CLIENT_SECRET")
s2s_oauth_client_id = os.getenv("S2S_OAUTH_CLIENT_ID")
s2s_oauth_account_id = os.getenv("S2S_OAUTH_ACCOUNT_ID")
oauth_url = 'https://zoom.us/oauth/token?grant_type=account_credentials&account_id='+s2s_oauth_account_id  # Replace with your OAuth endpoint URL

def get_access_token():
    try:
        # Create the Basic Authentication header
        auth_header = f'Basic {base64.b64encode(f"{s2s_oauth_client_id}:{s2s_oauth_client_secret}".encode()).decode()}'

        # Define the headers for the OAuth request
        headers = {
            'Authorization': auth_header,
        }

        # Make the OAuth request
        response = requests.post(oauth_url, headers=headers)

        # Check if the request was successful (status code 200)
        if response.status_code == 200:
            # Parse the JSON response to get the access token
            oauth_response = response.json()
            access_token = oauth_response.get('access_token')
            return access_token
        else:
            print(f'OAuth Request Failed with Status Code: {response.status_code}')
            print(response.text)
            return None
    except Exception as e:
        print(f'An error occurred: {str(e)}')
        return None



    

Heres the follow code to call the REST API

  from flask import Flask, request
      import requests
      import json
      
      app = Flask(__name__)
      
      def handle_callapi():
          # Fetch access_token from query string
          access_token = request.args.get('access_token')
      
          # Meeting data
          meeting_data = {
              "topic": 'hello world',
              "type": 2,
              "start_time": "2023-10-01T10:00:00Z",
              "duration": 120,
              "password": "12345678",
              "agenda": "40 mins limit demonstration",
              "pre_schedule": False,
              "timezone": "Asia/Singapore",
              "default_password": False
          }
      
          # Zoom API endpoint
          api_url = 'https://api.zoom.us/v2/users/me/meetings'
      
          # Headers for the request
          headers = {
              "Authorization": f"Bearer {access_token}",
              "Content-Type": "application/json",
              "Accept": "application/json"
          }
      
          # Send POST request to create meeting
          response = requests.post(api_url, headers=headers, data=json.dumps(meeting_data))
      
          # Return response
          return "Meeting Details: " + response.text
      

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.