LTI 1.x - Useful Links

garth
Community Champion
2
6532

After attending a session at InstructureCon 2016​ (which was very well organized and well worth the trip), I thought it might be useful to post some helpful resources that I found while cutting my teeth on LTI.

Canvas Dev and Friends

This site has useful links to several resources, and is worth bookmarking:

Canvas Dev & Friends - Instructure Tech Blog

Specifically, there is a link to the IRC Channel, which is a live chat where you can ask questions to those who are on-line.  I was able to get validation of ideas and techniques I was using to get things working.

Canvas Dev and Friends Modules

There is also a link labeled "a module on lti" that will take you here:

Canvas Dev and Friends

If you want some hands on exercises to work through all the specs you have been pouring over, I strongly recommend working through this course.  There are two modules: one on LTI, and one on the API.

It is worth working through both, you may very well pick up a few things you didn't know yet about the API.

Postman - A Useful Tool for Testing

If you haven't used this tool yet, you should consider getting familiar with it:

Postman | Supercharge your API workflow

This tool will allow you to make API calls manually and inspect the results, which will help you to visualize the data you are expecting to receive in your app.  The LTI and API docs are pretty good, but sometimes it helps to see it while you're trying to code it.

I have also used Restlet/DHC, which does essentially the same thing:

https://dhc.restlet.com/

Either way, it is very useful to have a tool that allows you to test syntax and parameters without having to debug a bunch of code.

LTI Common Cartridge XML Config

In order to get your own LTI app working, you will need an XML configuration file.

You can view a sample LTI configuration file here by clicking on the LTI Config link on this page:

https://lti-tool-provider.herokuapp.com/

This config file can easily be modified to get your app installed in Canvas, and is a good starting point for getting your LTI app installed in Canvas.  With this file you can easily play with all of the navigation options and user access parameters.

EduAppCenter also provides a tool to help you build your own custom LTI configuration:

XML Config Builder

This is a user interface allowing you to enter your information and select options, and it will build your custom XML file for you, a great tool to help you get started.

OAuth

Your LTI app is not going to work without understanding OAuth 1.0

Here is a tool that will walk you through the OAuth process:

OAuth 1.0 Authentication Sandbox

You can use values from this walk-through to test your OAuth methods, you should be able to generate the same output that the sandbox creates.  This makes it really easy to validate your output.

NOTE:  I strongly recommend that you find an OAuth library, writing your own will be time consuming and likely frustrating.  There is no reason to re-invent the wheel, unless of course you enjoy the challenge.

IMS Global - Sample Code

IMS Global is the organization responsible for defining the specifications for LTI.  You can find all the documentation your eyes can consume at their website.  Here is a link to the LTI sections:

Learning Tools Interoperability | IMS Global Learning Consortium

These guys are also kind enough to provide sample code for several languages, which can help get you started:

Learning Tools Interoperability: Sample Code | IMS Global Learning Consortium

Summary

I think I've hit the key tools that I used to get started with LTI, hopefully this will be useful to someone out there.

The best thing you can do if you're banging your head is to complete the Canvas Dev and Friends  modules, it will help.

I'm sure there are plenty more resources out there.  If anyone has additional resources they have found to be useful, please share!

Update

I have posted a three part tutorial on how to conenct an application to Canvas using LTI.

The example uses .NET, but walks through the steps you need to take:

2 Comments
jbrady2
Community Champion

 @garth ​ Thank you for taking the time and putting in the effort to create this list. As someone who is interested in learning about and building LTI apps, I know this will prove helpful.  I had the opportunity to sit down with Deactivated user​ and Nathan (Sorry, I didn't get your last name Nathan.) during Hack Night at InstructureCon 2016, and they provided much of the same information you have listed, but having this single page to refer to will be much better than trying, a month from now, to decipher my hand-written notes from my talk with them.

One thing that I would add, that Andrew provided me with, because I don't think I saw it in your list is the Instructure github page: Instructure, Inc. · GitHub

and especially, the lti_tool_provider_example linked to from that directory:

GitHub - instructure/lti_tool_provider_example: This is a basic and simple LTI Tool Provider that us...

alexander_kark1
Community Novice

This is a great resource! Thanks for sharing this.