cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
FunkyPajamas
Community Member

LTI 1.3 link selection (module) setup

Jump to solution

Hi,

I'm trying to follow the "link selection" placement (module) instructions here: https://canvas.instructure.com/doc/api/file.link_selection_placement.html and I'm having some issues. In the past I was able to set up the "editor button" placement using an XML config, but it seems the "link selection" one requires the JSON approach, so maybe I'm doing something wrong.

This is all done on my open source Canvas setup (dev environment), running the latest version of Canvas pulled from the github repo.

This is the JSON config (with security values changed):

{
    "title": "LTI 1.3 test (MODULE)",
    "scopes": [],
    "extensions": [
        {
            "domain": "mydomain",
            "tool_id": "deep-linky",
            "platform": "canvas.instructure.com",
            "settings": {
                "text": "LTI 1.3 test (MODULE)",
                "icon_url": "https://myiconurl.com/icon.png",
                "placements": [
                    {
                        "text": "Embed Tool Content as a Canvas Module",
                        "enabled": true,
                        "icon_url": "https://myiconurl.com/icon.png",
                        "placement": "link_selection",
                        "message_type": "LtiDeepLinkingRequest",
                        "target_link_uri": "https://mydomain.com/lti/launch"
                    }
                ]
            }
        }
    ],
    "public_jwk": {
        "kty": "val",
        "alg": "val",
        "n": "val",
        "use": "val",
        "e": "val",
        "kid": "val"
    },
    "description": "1.3 Test Tool DEV MODULE",
    "target_link_uri": "https://mydomain.com/lti/launch",
    "oidc_initiation_url": "https://mydomain.com/auth/openid_connect",
    "custom_fields": {}
}

 So the thing is I'm not getting any errors at all when I create the LTI Key like this, it just doesn't show any placements when I'm adding the app to the course, and it also doesn't show when trying to add an external tool to the module.

I tried editing the previous tool that I had created via XML and just adding the "link_selection" placement to it, but that didn't work either. I also created a new tool from scratch and tried to add the Link Selection to it manually, but no luck.

Any ideas?

 

0 Kudos
1 Solution
FunkyPajamas
Community Member

Huh. So I was adding the "app" directly into the course through the client id and that wasn't working. I tried going to the admin panel and then adding the app globally as an admin (also using client id) and that worked. I didn't really change anything on the app config. So strange. Thanks @svickers2 !

View solution in original post

0 Kudos
5 Replies
svickers2
Community Contributor

Nothing obvious jumps out at me with your configuration.  Just two suggestions:

  1. Try setting your domain property to "domain.com" (in case that is not just a typo).
  2. Ensure that you have LTI 1.3 fully configured in your Canvas instance by making sure that you get a public key returned from your JWKS endpoint.

Stephen

0 Kudos
FunkyPajamas
Community Member

Thanks @svickers2! All the "mydomain" instances are actually localhost:3000 pointing to my dev environment. I doubt that's it since in the XML version (for "editor_button" placement) localhost:3000 seemed to work.

Your second suggestion is throwing me for a loop, sorry. Is the JWKS endpoint /api/lti/security/jwks ? - the only refence I could find to JWKS endpoint in the API documentation is this one https://canvas.instructure.com/doc/api/public_jwk.html but there's no GET, just PUT.

Would you mind sharing a link that would explain how to go about your second suggestion? Sorry, I'm just getting started with Canvas & LTI 1.3. Thanks!

0 Kudos
svickers2
Community Contributor

Yes, the JWKS endpoint is /api/lti/security/jwks.  It should return at least one public key.  If it doesn't it probably means that you have not defined a private key in your Canvas instance.

0 Kudos
FunkyPajamas
Community Member

Thanks! Yes, it's returning a JSON set containing some keys, so apparently that's working.

I'll do some debugging and see if I can figure something out. Thanks!

0 Kudos
FunkyPajamas
Community Member

Huh. So I was adding the "app" directly into the course through the client id and that wasn't working. I tried going to the admin panel and then adding the app globally as an admin (also using client id) and that worked. I didn't really change anything on the app config. So strange. Thanks @svickers2 !

0 Kudos