Description
At UoM, we are attempting to use the Zoom LTI Pro Bulk import API to bulk create Zoom calendar entries in Canvas. I have been trying the instructions provided in the Bulk Import page ( POST /meeting/bulkImport) for several days now without much success.
We have imported the LTI Pro API json collection to Postman for our testing(https://zoomappdocs.docs.stoplight.io/lti-pro-v2/LTIPro-API/LTI%20Pro%20API.oas2.json). The bulk import API method does not require access token or any other authentication method, therefore no access token was used, except for constructing the X-Lti-Signate as explained below.
Error
When I attempt to call the bulk import API from Postman, I am getting the following error response from the webservice.
How To Reproduce (If applicable)
Steps to reproduce the behavior:
Construct the base string using key=lti_key×tamp=1639693478230
timestamp is milliseconds since epoch based on AEST. lti_key is found in the app registration page
Use the secret and the base string to get a HMAC-SHA1 string. I used a free online hmac generator for this step
Use the calculated HMAC-SHA1 string from above and encode it to base 64 safe url string (again, I used an on line tool for this)
Use the converted string from step 4 in X-Lti-Signature header field
The request body is populated with appropriate field values
Note: The Zoom LTI pro has been successfully integrated with Canvas since I am able to manually create/view Zoom meetings within Canvas. I have also used the csv import within the app and was able to successfully import meetings using the CSV. The issue is only with the bulk import API.
Additional context
The issue must be related to how I am constructing the X-Lti-Signatrue. I am wondering if any of the members in this forum has successfully used the above API to automate calendar entry creation in Canvas and if so if they would mind sharing any tips on how to do this.
Hi Jeff, Unfortunately no, I am still working with a Zoom technical resource to try and work this out. I will post something as soon as I have some luck.
Regards
Narada
As you can see, you have to encode the signature, remove the trailing equals sign (=), then encode to a URL safe string. Shoot me a reply if you have questions.
Thanks Jeff, great work! I managed to get it working in our test environment. However, I am still struggling to see the Zoom calendar entry in the Canvas subject. I can see the meeting in the Zoom app within the Canvas subject but not the entry within the Calendar.
I notice that you have not included the courseId field in the payload but I have added this in with my testing. I have used all of the following permutations for the courseId without much luck.
The numeric course id e.g. 115149
Sis course id e.g. ABPL30041_2022_SM1
The big int course id e.g. 154000000000115149
Let me know if have any luck with this. I am also interested to know who you managed to find the contextId for your Canvas subject. In my case I inspected the page displayed for the Zoom app and searched for the contextId hidden input field.
Hi Narada,
Itās been a while since Iāve worked with Canvas; in this case, I was integrating with Blackboard.
I also initially found the contextID via the browser console. Then, we found that field in our Blackboard database and exported the IDs from there. You may be able to do the same from the Canvas database.
You didnāt see anything related to courseID in the browser console? Again, Iām not using Canvas (and Blackboard doesnāt have that calendar integration), but I do see some possible entries like āext_fnds_course_idā. Iām not sure if youāll also have those same entries in Canvas to try. Perhaps Zoom Support could help you find the appropriate field from Canvas or at least give you an example of what the LTI API needs for that field.
Good luck!