cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Surveyor

Deep Link launch issue?

Posting this on behalf of one of my developers, we've had radio silence from support for over a week and would really like to get this working in Canvas since it works in the other major LMS :smileyconfused:

So we are trying to improve the flow of some of our LTI’s and after some research decided that deep linking is a good way to do it. I might be missing something because I can’t create one yet.

I was taking a look at

https://canvas.instructure.com/doc/api/file.assignment_tools.html

  • What “Lti advantage service” should my dev key have? (I just activated them all, so we shouldn’t have any issue here)
  • What “placements” should my dev key have? I have editor button and assignment selection
  • The one for editor button works but I’m not expecting AGS there. But according to https://canvas.instructure.com/doc/api/file.assignment_selection_placement.html
  • It looks like assignment selection is the correct one

There are 7 steps

  1. the user can select "External Tool" from the Submission Type dropdown.
  2. They then choose "Find" and select the tool they wish to select content from.
  3. Canvas then performs a Deep Linking launch request (if configured) to the tool and the user is presented with a tool-side UI to select or create a single LTI resource.
  4. The tool can return an LTI deep linking message back to Canvas with a URL for the LTI resource. Usually this is a URL with resource identifiers in the url.
  5. When students view the assignment, Canvas launches to the URL returned by the tool.
  6. If a resource identifier was provided as part of the url, then the tool will see this in the launch payload and be able to look up and render the correct resource.
  7. After completing the tool-side assignment, tools may optionally return a grade and/or submission. See the Grading (https://canvas.instructure.com/doc/api/file.assignment_tools.html) documentation for more details.

Step 1, 2, 3 are correct. But I’m stuck at step 4, I’m pretty sure I’m sending a correct JWT

Here’s a video

https://app.vidgrid.com/view/zqeTklHY3w1Q

Here’s an example JWT that I’m sending back (You can see the custom parameters and line item)

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjgyMzVlOWY2LWY1Y2MtMTFlOS04MDJhLTVhYTUzODk4NGJkOCJ9.eyJpc3MiOiIxNDk3MTAwMDAwMDAwMDAwMTMiLCJhdWQiOlsiaHR0cHM6XC9cL2NhbnZhcy5pbnN0cnVjdHVyZS5jb20iXSwiZXhwIjoxNTgxNDYwNTczLCJpYXQiOjE1ODE0NTk5NzMsIm5vbmNlIjoibm9uY2U1ZTQzMmEwNTBmNDY0IiwiaHR0cHM6XC9cL3B1cmwuaW1zZ2xvYmFsLm9yZ1wvc3BlY1wvbHRpXC9jbGFpbVwvZGVwbG95bWVudF9pZCI6Ijk3OmVmNDI1Nzc1NjBkYmI5ZjQ5MzJiODI5YjFlYmNhYWIzMTQyODA0MGIiLCJodHRwczpcL1wvcHVybC5pbXNnbG9iYWwub3JnXC9zcGVjXC9sdGlcL2NsYWltXC9tZXNzYWdlX3R5cGUiOiJMdGlEZWVwTGlua2luZ1Jlc3BvbnNlIiwiaHR0cHM6XC9cL3B1cmwuaW1zZ2xvYmFsLm9yZ1wvc3BlY1wvbHRpXC9jbGFpbVwvdmVyc2lvbiI6IjEuMy4wIiwiaHR0cHM6XC9cL3B1cmwuaW1zZ2xvYmFsLm9yZ1wvc3BlY1wvbHRpLWRsXC9jbGFpbVwvY29udGVudF9pdGVtcyI6W3sidHlwZSI6Imx0aVJlc291cmNlTGluayIsInRpdGxlIjoidGVzdCIsInVybCI6Imh0dHBzOlwvXC9jbG91ZC5pbG9zdmlkZW9zLmNvbVwvZW1iZWRcL2sxanpjYVk1b3gxbCIsImVtYmVkIjp7Imh0bWwiOm51bGx9LCJpZnJhbWUiOnsic3JjIjoiaHR0cHM6XC9cL2Nsb3VkLmlsb3N2aWRlb3MuY29tXC9lbWJlZFwvazFqemNhWTVveDFsIiwid2lkdGgiOjY0MCwiaGVpZ2h0IjozNjB9LCJwcmVzZW50YXRpb24iOnsiZG9jdW1lbnRUYXJnZXQiOiJpZnJhbWUifSwiY3VzdG9tIjp7ImN1c3RvbV9pbnN0cnVjdGlvbnMiOiJkYXNkYXNkYXNkYXMiLCJyYW5kdGFnIjoiazFqemNhWTVveDFsIiwic3RhcnRfZGF0ZSI6IiRSZXNvdXJjZUxpbmsuYXZhaWxhYmxlLnN0YXJ0RGF0ZVRpbWUiLCJlbmRfZGF0ZSI6IiRSZXNvdXJjZUxpbmsuYXZhaWxhYmxlLmVuZERhdGVUaW1lIiwiaXNfcXVpeiI6dHJ1ZX0sImxpbmVJdGVtIjp7InNjb3JlTWF4aW11bSI6IjExIiwibGFiZWwiOiJ0ZXN0In19XX0.EdxnNTDJaSKwYJR4Rpgt1w-gAW64du7m59bp2PZha-3eb3edWdkH0Iu6LFSbheMhgNCJ1ehQRMkhays6vOUHTUCFCXO-AImfZg0-fv9by8SiqQWyyrLbK0sEHBjcAlXL66ma21EioYJmWct76Hs8I2YxyPJSN5KG9ZTqWeXM-Pkv6LdyqgNfJey8cB0F4dMoH-WMJxR7MVewb7LyBg4Tvv_irG_itVbrOsLsUWHw0BVeuLE0D1sEbpNJ_aOrAiocJVXDKz2peXNXBWqqVjNFxL68p-6D7IOGxRDOUDXvqecrlE4R0wl8uZNz-tIyVXX7fX0CQ4bV6nyafsN0F7iSvQ

BTW, this flow is working correctly in Blackboard and D2L. Which makes me think I’m just missing one step or placement.

Does Canvas not support sending custom params/line item at that point of the process?

Thanks!

Labels (2)
7 Replies
Highlighted
Community Member

Is canvas support multiple deep links when selecting content?

Highlighted

In my experience, no it does not.  In LTI 1.0/1.1/2.0 it sends a parameter of accept_multiple=false, and similarly with LTI 1.3.

Highlighted

Hi ,

I hope you are doing well.

Have you implemented an LTI advantage in canvas?

If yes then canvas support multiple deep links?

what are the limitations of LTI advantage in canvas that you are facing?

Please respond to me asap.

Highlighted
Surveyor

I dpn't think that Canvas supports adding custom parameters to individual resource links; it expects these to be passed in the query string of the launch URL.  Something which I think Instructure should really address because it does make interoperability problematic.

Highlighted

Hi Stephen,

Thanks for your prompt reply.

I have the last question.

Does REST canvas API documentation is available for LTI advantage?

Highlighted

Sorry, I do not understand your question.  The Canvas REST API is quite separate from LTI; the two are documented independently.

Highlighted

Hello,

Thanks for your prompt response.

You told me that custom parameters are added as a query string in the

launch URL. Can you please provide me any guide related to this for LTI

advantage? How can we do this?