Deep Link Launch Response is missing some attributes

Created on 19 April 2024, 7 months ago
Updated 24 July 2024, 4 months ago

Problem/Motivation

Some LMSs send a "data" attribute in the deep_linking_settings that needs to be returned to the LMS in the JWT generated based on the LTI 1.3 Deep link specification.

The oat library accepts that parameter, but the LTI Tool Provider module is not sending it, so it comes as null and deep link does not work.
It works in Canvas because it does not send the data parameter in the payload, but D2L and Schoology, for example, send it and the requests fail.

Steps to reproduce

Try to launch deep link and return a link in Schoology or D2L.

Proposed resolution

Need to pass all the parameters to the DeepLinkingLaunchResponseBuilder and not only those three.

This is the current code
$builder = new DeepLinkingLaunchResponseBuilder();
$message = $builder->buildDeepLinkingLaunchResponse($resourceCollection, $event->getRegistration(), $event->getReturn());

And these are all the parameters that the builder accepts. data must come if it comes in the request (and the deploymentId too):

ResourceCollectionInterface $resourceCollection,
RegistrationInterface $registration,
string $deepLinkingReturnUrl,
?string $deploymentId = null,
?string $deepLinkingData = null,
?string $deepLinkingMessage = null,
?string $deepLinkingLog = null,
array $optionalClaims = []
)

Remaining tasks

User interface changes

API changes

Surely the event LtiToolProviderContentResourceEvent will need to include more attributes.

Data model changes

🐛 Bug report
Status

Active

Version

2.0

Component

Code

Created by

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @ddelblanco_2
  • 🇩🇪Germany D34dMan Hamburg

    @ddelblanco_2 am not too familiar with this, I could try to create a MR if you share some "links" that would reach Drupal containing those parameters (obfuscated values should be ok).

Production build 0.71.5 2024