AnsweredAssumed Answered

Deep Link launch issue?

Question asked by Glenn Oslin on Feb 20, 2020
Latest reply on Mar 21, 2020 by Stephen Vickers

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 

 

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!

Outcomes