Пример совместимости с LTI для потребителя и поставщика

Я ищу любой образец кода для интеграции внешнего инструмента в LMS с использованием LTI в NodeJS, но найти рабочий пример довольно сложно. я просмотрел образец, предоставленный IMS Global, но это трудно понять. кто-нибудь, у кого есть идеи, как авторизовать приложение с помощью LTI, поделитесь своим кодом.


person Gayan    schedule 04.05.2017    source источник
comment
У меня такая же проблема. Это немного беспокоит, когда у глобального стандарта взаимодействия мало или совсем нет примеров, которые можно найти в Интернете. Вы нашли ответ на свой вопрос?   -  person Ben Smith    schedule 15.08.2017


Ответы (3)


Я перенес код omsmith из CoffeeScript в обычный JavaScript и поместил его на Packagist:

https://github.com/tsugiproject/tsugi-node-lti

https://www.npmjs.com/package/tsugi-node-lti

person drchuck    schedule 11.02.2018

Поиск Github дал следующие примеры приложений Node LTI:

schul-cloud/node-lti-provider

whitmer/lti_example

omsmith/ims-lti-example

Надеюсь, один из них окажется для вас полезным.

person colincr    schedule 23.10.2017

это немного поздно, но это может помочь кому-то еще.

Я создал реализацию протокола преимущества Lti 1.3 в nodejs, которая упрощает настройку поставщика lti.

Ltijs

Вот краткий пример использования:

const path = require('path')

// Require Provider 
const Lti = require('ltijs').Provider

// Configure provider
const lti = new Lti('EXAMPLEKEY', 
            { url: 'mongodb://localhost/database', 
              connection:{ user:'user',
                          pass: 'pass'} 
            }, 
            { staticPath: path.join(__dirname, '/views/') })


let setup = async () => {
  // Configure main routes
  lti.appUrl('/')
  lti.loginUrl('/login')

  // Deploy and open connection to the database
  await lti.deploy()

  // Register platform
  let plat = await lti.registerPlatform(
    'http://platform/url', 
    'Platform Name', 'ClientIdThePlatformCreatedForYourApp', 
    'http://platform/AuthorizationUrl', 
    'http://platform/AccessTokenUrl', 
    { method: 'JWK_SET', key: 'http://platform/keyset' }
  )

  // Set connection callback
  lti.onConnect((connection, request, response) => {
    // Call redirect function
    lti.redirect(response, '/main')
  })

  // Set route accounting for issuer context
  lti.app.get('/:iss/main', (req, res) => {
    // Id token
    console.log(res.locals.token)
    res.send('It\'s alive!')
  })
}
setup()
person Carlos Vinícius    schedule 06.07.2019