Deep linking LTI External Tool

Jump to solution
peter3
Community Member

So my tool creates bits of user generated content, and it is very handy to be able to provide a url that links directly to one of those pieces of content.  However I can't passes any arguments to the external tool definition that canvas uses to perform the basic lti launch

I want to be able to do something like this

https://canvas/courses/14/external_tools/25?link=/deep/content/link  => https://my.tool.url/lti?link=/deep/content/link

I understand that canvas does not currently repackage GET params, from the launch link back into the basic_lti_launch, however I am looking for a solution that can achieve this same effect.

Is there any other way to accomplish this, where I can pass arbitrary url parameters thru to the external tool launch?

Clarification:

This needs to be a solution that doesn't require any admin rights, i.e. a student can generate the url for sharing etc..

Labels (1)
1 Solution
peter3
Community Member

Here is the workaround that I ultimately settled upon .. and it is working well.

I created a page inside my application that acts as a redirector (lets call it deeplink); the code flow works like this

  1. /deeplink?redirect=/path/to/deep/content
  2. the page body for deeplink takes the redirect param and puts it in a cookie and redirects to an LTI app installed inside canvas. i.e.  forward to:  https://canvas/courses/14/external_tools/25
  3. Then that external tool forces an LTI Launch on my application /deeplink
  4. now the page body checks and sees the existence of a redirect cookie and redirects the user to the appropriate page.

View solution in original post