LMSouq
moodle-core Open

LTI 2 tool Proxy registration is failing with 400 or 500 error

MI
Michael Robellard
1 month ago
3 views
Problem Description
I am developing an LTI Tool Provider in Python and have had no problems getting any aspects of LTI 1.x basic launch working or the Content Item specification. I have hit a huge brick wall though trying to use the LTI 2 registration mechanism. Whenever I run my code on some Tool Consumers all I get is a 400 error when I post my tool proxy to the tool proxy endpoint listed in the tool consumer profile. I have tried this on: * http://lti.tools/test/tc.php (Registers Succesfully) * Moodle 3.2 running on AWS (400 Bad Request) * Moodle 3.3 runnong on Localhost (Registers Succesfully) * Canvas (400 Bad Request) {"error":"Invalid Capabilities"} Unfortunately nothing is giving me any idea of what is bad about the request. I am 90% certain that it is the JSON or something in the headers. I am pretty sure it is not the oAuth (Thanks to Comments below and the fact that it works in 2 of the 4 tested environments) Supposedly Moodle gives you some output somewhere, but I have looked everywhere and haven't found it. I turned on the development mode from the Site Administrator Menu and followed several directions on how to make sure that errors are being logged in PHP and I can't find anything anywhere. Originally I couldn't get this to work anywhere, but I was able to hook up xdebug to the local Moodle 3.3 instance and that's how I was finally able to get that working. Here is the Tool Consumer Profile from Canvas: {'@context': ['http://purl.imsglobal.org/ctx/lti/v2/ToolConsumerProfile'], '@id': 'https://canvas.instructure.com/api/lti/courses/1146163/tool_consumer_profile/339b6700-e4cb-47c5-a54f-3ee0064921a9', '@type': 'ToolConsumerProfile', 'capability_offered': ['basic-lti-launch-request', 'User.id', 'Canvas.api.domain', 'LtiLink.custom.url', 'ToolProxyBinding.custom.url', 'ToolProxy.custom.url', 'Canvas.placements.accountNavigation', 'Canvas.placements.courseNavigation', 'Canvas.placements.assignmentSelection', 'Canvas.placements.linkSelection', 'Canvas.placements.postGrades', 'User.username', 'Person.email.primary', 'vnd.Canvas.Person.email.sis', 'Person.name.given', 'Person.name.family', 'Person.name.full', 'CourseSection.sourcedId', '...

AI-Generated Solution

Powered by LMSouq AI · GPT-4.1-mini

✓ Solution Ready
Analyzing problem and generating solution…
Was this solution helpful?
Back to Knowledge Base