Subject: NO Client ID Found (2505) Error in Zoom LTI Integration in Canvas after updating to LTI 1.3

Recently, the university I work for updated our LTI version to 1.3 from 1.1. After the update to LTI 1.3, we have since been receiving the following error in some of our Python code related to the Zoom LTI Integration in our Canvas courses: “NO Client ID found (2505)”. This error occurs when trying to send a POST request to the following URL with all the relevant data: https://applications.zoom.us/lti/advantage/login/{LTI_LOGIN_ENDPOINT}.

The goal of the Python code is to use both the Canvas API and the Zoom LTI Integration in our Canvas courses to figure out which Zoom meetings were held by which courses in Canvas. We already collect data from both the Canvas API and the Zoom API individually, but as of right now, my team isn’t aware of any easy or straightforward ways to match the Zoom meetings from the Zoom API to the Canvas courses from the Canvas API.

A while back, my team was able to piece together a solution using Python and the Canvas API to solve this problem. The core of the solution was automating the different GET and POST requests seen in a tool like the Network tab in the Developer Tools for Google Chrome when a user is navigating to the Zoom LTI Tab in a web browser. This code was working fine before the update to LTI 1.3. We do the following sequence of steps before receiving that error.

  • We use the CanvasAPI Python library with our Canvas URL and API Key to gather information related to a course.
  • Using the course information, we gather the list of tabs available in that course. One of tabs in the course is a Zoom tab for the Zoom LTI Integration.
  • From the Zoom tab, we grab a URL like the one below:
    • https://canvas.{UNIVERSITY}.edu/api/v1/courses/{COURSE_NUMBER}/external_tools/sessionless_launch?id=430687&launch_type=course_navigation
      • An external tool ID of 430687 is a reference to the Zoom LTI.
  • Using the link found above, we send a GET request to that link and are given a response like the following:
    • {
    • “id”: 430687,
    • “name”: “Zoom LTI 1.3”,
    • “url”: "https://canvas.{UNIVERSITY}.edu/courses/{COURSE_NUMBER}/external_tools/430687?display=borderless&launch_type=course_navigation&session_token=SESSION_TOKEN_HERE "
    • }
  • Using the URL found in the previously mentioned response, we send another GET request to that URL and in response, we are given the HTML of a webpage.
  • In that HTML, there is a form where the action is to send the form data to the following URL: https://applications.zoom.us/lti/advantage/login/{LTI_LOGIN_ENDPOINT}
  • In the HTML we received, all the input fields in that previously mentioned form already contain values. The names of these input fields are:
    • iss
    • login_hint
    • client_id
    • deployment_id
    • target_link_uri
    • lti_message_hint
  • We then send our own POST Request using the URL and input fields from the previously mentioned form.
    • This is where the “NO Client ID found (2505)” error is returned to us.

Is there a reason why updating from LTI 1.1 to 1.3 would cause this issue? Is there an easier way to associate Zoom meetings with Canvas courses? My team noticed that there are some API endpoints like the ones in the following article that can return information about upcoming meetings in the Zoom LTI. However, as I mentioned there is no way to filter based on course IDs and the data doesn’t return a course ID for me to use against our Canvas course data: Scheduling meetings via API with LTI Pro

Hello,

@mattwill unfortunately for app-specific support you would have to contact the apps support resource, and since this is a Zoom-developed app you will have to contact our support team for support, there are no resources on the dev forum to provide app-specific support.

This topic was automatically closed after 30 days. New replies are no longer allowed.