Skip to main content

LTI 1.3 Integration in Canvas

This guide walks Canvas Administrators through setting up a root-level installation of the Lingco Classroom LTI 1.3 integration

Written by Ryan Burke

After installing this integration, instructors at your organization will be able to add the Lingco Classroom link to their course navigation. Then, their students will be able to skip the normal registration and login process by simply clicking that link in their Canvas course. They will be automatically logged in through a linked account. If they do not already have a Lingco account, one will be created for them using their student information from Canvas.

Before you start — two Canvas features must stay enabled. The integration requires Assignment and Grade Services (AGS) and Names and Role Provisioning Services (NRPS) on every launch. These are granted by the scopes and privacy level in the configuration below. If either is later disabled for the app, every student launch will fail with a configuration error, so leave them in place.

Step 1: Create a Developer Key

  1. Go to Admin > Developer Keys.

  2. Click + Developer Key and choose LTI Key.

  3. In the configuration window:

Field

Value

Key Name

Lingco Classroom LTI 1.3

Owner Email

Redirect URLs

Method

Paste JSON

Configuration

(Paste the config from below)

Configuration Payload (Paste into Developer Key)

Do not remove the custom_fields block. Lingco reads these custom fields to identify the student, link the Canvas course, and sync the roster and grades. A launch that is missing one of these fields is rejected. You can adjust the surrounding metadata (title, description, icon), but leave the custom fields, scopes, and URLs intact.

{
"title": "Lingco LTI 1.3",
"description": "Lingco LTI 1.3 Integration for Canvas",
"scopes": [
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem",
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/score",
"https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly",
"https://canvas.instructure.com/lti/public_jwk/scope/update",
"https://canvas.instructure.com/lti/account_lookup/scope/show",
"https://canvas.instructure.com/lti-ags/progress/scope/show",
"https://canvas.instructure.com/lti/page_content/show"
],
"extensions": [
{
"platform": "canvas.instructure.com",
"settings": {
"platform": "canvas.instructure.com",
"privacy_level": "public",
"target_link_uri": "https://class.lingco.io/api/lti1p3/launch",
"placements": [
{
"placement": "course_navigation",
"message_type": "LtiResourceLinkRequest",
"windowTarget": "_blank",
"target_link_uri": "https://class.lingco.io/api/lti1p3/launch",
"text": "Lingco Classroom",
"default": "disabled",
"icon_url": "https://s3.us-east-2.amazonaws.com/lingco-static/img/favicon.png"
}
]
}
}
],
"custom_fields": {
"lms_email": "$Person.email.primary",
"lms_user_id": "$Canvas.user.id",
"lms_course_id": "$Canvas.course.id",
"lms_course_start_at": "$Canvas.course.startAt",
"lms_course_end_at": "$Canvas.course.endAt",
"lms_term_start_at": "$Canvas.term.startAt",
"lms_term_end_at": "$Canvas.term.endAt",
"lms_course_workflow_state": "$Canvas.course.workflowState",
"lms_user_name": "$Person.name.full",
"lms_section_ids": "$Canvas.course.sectionIds",
"lms_section_names": "$com.instructure.User.sectionNames",
"lms_user_given_name": "$Person.name.given",
"lms_user_family_name": "$Person.name.family",
"lms_login_id": "$Canvas.user.loginId",
"lms_sis_user_id": "$Canvas.user.sisSourceId"
},
"public_jwk_url": "https://class.lingco.io/api/lti1p3/keys",
"target_link_uri": "https://class.lingco.io/api/lti1p3/launch",
"oidc_initiation_url": "https://class.lingco.io/api/lti1p3/login"
}

This configuration can be tweaked and updated directly from this help document.

When finished, click Save.

After returning to the Developer Keys page, toggle the State switch to Enabled under the State column.

Note the key in the Details column, this will be used later.

Step 2: Add the App in Canvas

You may need to unlock the app after installation in order to add the app to your instance. Click Admin in Canvas, then go to Apps. Then click Manage. You should then be able to unlock it. Then, follow the steps below to add the app in Canvas.

  1. Go to Admin > Settings > Apps.

  2. Check to see if the Lingco Classroom LTI 1.3 app exists. If so, skip steps 3-5

  3. Click + App.

  4. Choose:

    • Configuration Type: By Client ID

    • Client ID: Fill out the Client ID with the ID noted in the "Details" column of the Developer Key.

  5. Click Install.

  6. Open the app settings menu and click Deployment Id

Step 3: Share Configuration Details with Lingco

Once you’ve completed the setup, please send the following information to [email protected] so we can enable LTI 1.3 for your institution on our side:

  • Client ID (from the Developer Key you just created)

  • Deployment ID (from the installed application under Admin > Settings > Apps)

These are required in order for Lingco to recognize your LMS instance and complete the integration.

Step 4: Test the Integration

After receiving confirmation from Lingco that we're ready for you to test, you can verify the integration is working as expected.

  1. Open a course.

  2. Navigate to the Course Navigation menu.

  3. You should see Lingco Classroom as an available link. (If it isn't visible, enable it under Settings > Navigation.)

  4. Clicking it will launch the tool using the LTI 1.3 flow.

If you have questions or need help configuring your instance, email us at [email protected].

Did this answer your question?