We want to add support for Canvas course sections (How do I add a section to a course as an instructor? ) to our LTI app. When a student launches an assignment that uses our LTI app as an external tool, we want the students to be grouped according to which section they belong to, within our app. Within our app each student will be able to see the other students in their section, but not see students from other sections.
Ideally we'd like to do this in a way that isn't specific to Canvas, so that we can support the equivalents of course sections in other LMS's. But we'll have to do separate implementations for each LMS if there's no other way.
So our LTI app needs to get information about the current course section on assignment launch so that it can respond to it. And I'm wondering how an LTI app can best get access to info about the course section?
There doesn't appear to be any info about course sections in the standard LTI 1.1 launch params (correct me if I'm wrong).
It seems clear that we can get the necessary information in a Canvas-specific way by combining custom Canvas launch params variable substitutions (https://canvas.instructure.com/doc/api/file.tools_variable_substitutions.html) plus usage of the Canvas sections API (https://canvas.instructure.com/doc/api/sections.html). It looks like the variable substitutions can only get us the section ID in the launch params. We also need the section name, so we'd have to get that from the API.
But this approach has some drawbacks:
- It's Canvas-specific, would need to be completely re-implemented for other LMS's
- It requires a configuration change to existing installations of our app in Canvas instances in the wild, to add the custom field
- It requires us to make additional network requests to the Canvas API on launch, to get more information about the section
- It'll only work for instances of our app where we've been given a developer key and secret, otherwise we can't access the Canvas API. (Existing developers keys in the wild that we're using will need to have more API scopes added to them as well, if they're scoped.)
I'm wondering whether there's a better way? For example, does Canvas support anything from LTI 1.3 that provides access to section information?