Resources LTI & LMS Integration

Canvas Admin Deployment Guide

Set up Play With ASL as an LTI 1.3 tool in Canvas Cloud. Written for root-account administrators, with a short hand-off for the first teacher.

Download this guide (PDF)

Overview

Welcome. This guide walks a Canvas root-account administrator through registering Play With ASL: School Edition as an LTI 1.3 tool, then hands off to a teacher for the first assignment. Plan on one sitting for the admin half; the teacher half takes a few minutes.

Play With ASL is certified for 1EdTech LTI Advantage Complete (LTI 1.3 Core, Deep Linking 2.0, Assignment and Grade Services 2.0, Names and Role Provisioning Services 2.0). You can confirm the listing at https://site.imsglobal.org/certifications/playwithasl.

Registration is a short manual process: you create an LTI Developer Key, paste our JSON, turn the key on, and install it By Client ID. Play With ASL is not an Instructure partner, so there is no global key to inherit and Dynamic Registration is not part of this path.

This guide covers Canvas Cloud production. Canvas Cloud uses one shared issuer for every school, so the values that identify your school are the Client ID and Deployment ID; you will send those to us at the end. The details are under OIDC, JWKS, and redirect URLs.

Prerequisites

  • A Canvas root-account Admin account. Developer Keys live on the root account, so this part needs an admin rather than a teacher.
  • A sandbox or practice course for the first placement. Keep real rosters and live gradebooks out of it until you have seen the Curriculum Wizard open.
  • A few minutes at the end to send us three values: Client ID, Deployment ID, and iss, plus your Canvas hostname. Institution-specific values shows where each one comes from.
  • The registration method is Enter JSON, then By Client ID. Skip Manual Entry; everything Canvas needs is in the JSON. (If you also run Brightspace, this is a different flow from its “Register Tool.”)

Register the Tool

  1. Sign in as a root-account Admin.
  2. Go to Admin → Developer Keys → + Developer Key → + LTI Key.
  3. Choose Enter JSON and paste the JSON from the next section. Leave Selection Width and Selection Height exactly as they arrive: 1280 and 900.
  4. Save the key, then switch its state to ON.
  5. Confirm assignment_selection and link_selection both show 1280 × 900.
  6. Hard-refresh with the cache disabled. Canvas caches launch_definitions for ten minutes (max-age=600), and a stale copy keeps the old window size.
  7. In the account or your practice course, go to Settings → Apps → + App, choose By Client ID, paste the numeric Developer Key id, and install.
  8. Copy the Client ID (the same Developer Key id) and the Deployment ID from the installed app.
  9. Send us the Client ID, Deployment ID, and iss, plus your Canvas hostname, through Contact or support@playwithasl.com. We register your school on our side and confirm by email; launches start working once that registration is in place.

Paste JSON

Paste this file unchanged when you create the LTI Developer Key. It already points at our production endpoints on api.playwithasl.com. Download the JSON file.

{
  "title": "Play With ASL",
  "description": "Teach With ASL / Play With ASL School Edition LTI 1.3 Advantage tool. Paste this JSON when creating a Canvas Developer Key (LTI Key) via By Client ID. Public endpoints are the certified tool surface.",
  "oidc_initiation_url": "https://api.playwithasl.com/lti/login",
  "target_link_uri": "https://api.playwithasl.com/lti/launch",
  "public_jwk_url": "https://api.playwithasl.com/api/lti/jwks",
  "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/score",
    "https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
    "https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly"
  ],
  "extensions": [
    {
      "domain": "api.playwithasl.com",
      "tool_id": "play-with-asl",
      "platform": "canvas.instructure.com",
      "privacy_level": "public",
      "settings": {
        "text": "Play With ASL",
        "selection_height": 900,
        "selection_width": 1280,
        "placements": [
          {
            "placement": "assignment_selection",
            "message_type": "LtiDeepLinkingRequest",
            "text": "Play With ASL",
            "target_link_uri": "https://api.playwithasl.com/lti/launch",
            "selection_height": 900,
            "selection_width": 1280
          },
          {
            "placement": "link_selection",
            "message_type": "LtiDeepLinkingRequest",
            "text": "Play With ASL",
            "target_link_uri": "https://api.playwithasl.com/lti/launch",
            "selection_height": 900,
            "selection_width": 1280
          },
          {
            "placement": "course_navigation",
            "message_type": "LtiResourceLinkRequest",
            "text": "Play With ASL",
            "target_link_uri": "https://api.playwithasl.com/lti/launch",
            "selection_height": 800,
            "selection_width": 1000
          }
        ]
      }
    }
  ],
  "custom_fields": {
    "canvas_api_domain": "$Canvas.api.domain"
  }
}

Keep 1280 × 900. The JSON sets selection_width 1280 and selection_height 900 on assignment_selection, link_selection, and the tool settings. If those fields end up empty, Canvas falls back to 800 × 400 and the Find window opens too small to show any packs. course_navigation in the same JSON is a separate 1000 × 800 link for the course menu; the Curriculum Wizard comes from the assignment placements, so teachers should use Find rather than Course Navigation when placing content.

Install By Client ID

Once the key is ON, install it from + App and choose By Client ID. The Client ID is all Canvas needs here.

Add App dialog with Configuration Type open. By Client ID is in the list.
In + App, open Configuration Type and choose By Client ID.
Add App dialog set to By Client ID, with an empty Client ID field. Canvas notes that an account admin generates the LTI developer key.
Paste the numeric Developer Key id into Client ID. Canvas reminds you that an account admin generates the key; that is the key you just turned on.
Course Settings Apps tab listing Play With ASL as an installed external app.
Done: Play With ASL appears under Course Settings → Apps.

Basic Tool Information

For reference, this is what the JSON registers. Nothing here needs to be typed by hand.

Play With ASL basic tool information
Tool name Play With ASL
Description Teach With ASL / Play With ASL School Edition LTI 1.3 Advantage tool
Domain api.playwithasl.com
Privacy Public (set in the JSON)
Placements assignment_selection and link_selection open the Curriculum Wizard (Deep Linking, 1280 × 900). course_navigation is a separate 1000 × 800 course-menu link.
Services Assignment and Grade Services (line item, score, result) and Names and Role Provisioning (context membership), matching the JSON scopes

OIDC, JWKS, and redirect URLs

These are the production endpoints the JSON already contains. Deep Linking uses the same target link URI with message type LtiDeepLinkingRequest, so there is one redirect to register.

Play With ASL LTI endpoint URLs
OIDC login initiation https: / / api.playwithasl.com / lti / login
Target link URI / redirect https: / / api.playwithasl.com / lti / launch
Keyset URL (JWKS) https: / / api.playwithasl.com / api / lti / jwks
Domain api.playwithasl.com

Canvas Cloud production uses the platform values below. You do not paste these anywhere; we keep them on our side. Two things worth knowing: iss is the shared https://canvas.instructure.com for every Cloud school, and the OIDC authorize, token, and JWKS endpoints live on sso.canvaslms.com rather than on your school’s hostname.

Canvas Cloud production platform URLs
iss https: / / canvas.instructure.com
OIDC authorize https: / / sso.canvaslms.com / api / lti / authorize_redirect
Token https: / / sso.canvaslms.com / login / oauth2 / token
Platform JWKS https: / / sso.canvaslms.com / api / lti / security / jwks

Canvas beta and test environments use different iss and sso hosts and are outside this guide.

Institution-specific values

Canvas generates the Client ID and Deployment ID when you create and install the key; copy them straight from Canvas. We match your launches on Client ID, Deployment ID, and iss together. Your hostname helps us label your account, but it is not the iss; that stays https://canvas.instructure.com.

Institution-specific Canvas values
Client ID The numeric Developer Key id, copied from Canvas
Deployment ID Shown on the installed app after the By Client ID step
iss https://canvas.instructure.com
Hostname Your school’s Canvas address, for example something.instructure.com. Send it along for our records; the iss above is what Canvas uses for sign-in.

Leave out passwords, launch JWTs, and student emails. We never need them.

Teachers: Add the First Assignment

Once we confirm your registration, a teacher takes it from here. This is the part that proves the setup end to end, so have a teacher do it rather than the admin.

  1. Open the course, go to Assignments, and add an assignment.
  2. Set Submission Type to External Tool.
  3. Click Find.
  4. Choose Play With ASL.
  5. The Curriculum Wizard opens inside Link Resource from External Tool. (Behind the scenes, that is Canvas sending an LtiDeepLinkingRequest on assignment_selection.)
  6. Pick a pack and click Add to Course.
  7. Save the assignment.

Use Find rather than the Course Navigation link; the wizard lives behind the assignment placements. An admin opening the tool from the account is a handy sanity check, but the teacher placement is the one that counts.

Assignment edit page with Submission Type set to External Tool, the production launch URL, and the Find button.
Submission Type set to External Tool. The URL field shows our production launch address; Find is where you pick a pack.
Configure External Tool dialog listing Play With ASL.
In the Find dialog, choose Play With ASL.
Link Resource from External Tool showing the Curriculum Wizard with 317 presets and visible preset cards.
The Curriculum Wizard inside Find, with 317 presets and their cards showing. This is the Deep Link placement.
Unpublished assignment whose description reads Play With ASL - Action Signs (TILT!).
A pack placed as an assignment (Action Signs: TILT!), still unpublished, which is where you want it for a first run.
Course Assignments index with one published assignment row.
The Assignments index after publishing. Students will find the assignment here; their launch is a separate step, covered below.

Check It Worked

Three things tell you the setup is good:

  • Find opens the Curriculum Wizard and you can see pack cards. If the window is small and empty, see the first row under Troubleshooting.
  • The teacher can place one pack, and the assignment’s URL is the production launch address on api.playwithasl.com.
  • A student opening the assignment is a later, separate check. The wizard check above needs neither grade passback nor students in the course yet.

Your school’s first teacher placement is the real confirmation for your Canvas Cloud tenant; our own test environment does not stand in for it. Please let us know how it goes, either way.

Troubleshooting

Common Canvas LTI issues
Find modal is tiny and shows no cards Selection width and height ended up empty, so Canvas used its 800 × 400 default. Re-paste the JSON (or set 1280 × 900 on assignment_selection and link_selection), save, then hard-refresh with the cache disabled. Canvas holds the old size for up to ten minutes (max-age=600).
Launch 400 UNKNOWN_PLATFORM The hostname reached us as iss. Cloud production iss is https://canvas.instructure.com; send us the corrected value and we will update your registration.
Launch 400 AMBIGUOUS_PLATFORM Every Cloud school shares one iss, so we match launches on Client ID. Check that the Client ID you sent matches the installed key; we will never guess between schools.
Blank iframe A framing restriction. Production allows https://*.instructure.com and https://*.canvaslms.com. If your school uses a vanity host such as canvas.school.edu, contact us and we will add it before Find will render there.
Authorize URL points at the school host Cloud OIDC, token, and JWKS endpoints are on sso.canvaslms.com, not on https://<school>.instructure.com/.... If a checklist suggests the school host, use the sso values above.
Grades do not appear Grade passback happens on a later student launch, not at the Find step. Nothing is wrong if the wizard check shows no grades yet.
Third-party cookie warnings OIDC state travels on the redirect, so a third-party cookie warning on its own does not mean the registration failed. If the wizard opened, you are fine.

Support

We are glad to help. Reach us through https://www.playwithasl.com/contact or support@playwithasl.com. Including these up front saves a round trip:

  • Canvas hostname
  • Client ID
  • Deployment ID
  • iss
  • Course name
  • What you expected and what happened (an error code or screenshot helps)

Please leave out passwords and launch JWTs.

Thanks for bringing Play With ASL to your campus. Once your registration is confirmed, your teachers can go straight to Teachers: Add the First Assignment.

Download this guide (PDF)