groton-school/slim-canvas-api-proxy

Installs: 171

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 1

pkg:composer/groton-school/slim-canvas-api-proxy

2.1.1 2025-10-07 19:04 UTC

This package is auto-updated.

Last update: 2025-10-08 17:49:11 UTC


README

Server-side actions and routes for authenticating to and accessing the Canvas LMS API from a web client

Latest Version

Install

composer require groton-school/slim-canvas-api-proxy

Use

This is an implementation of groton-school/slim-oauth2-api-proxy. This provides a server-side proxy to the Canvas LMS API for a web app (which would not normally be able to directly call an API hosted on another domain due to CORS restrictions). The canonical example of how to use this is groton-school/slim-skeleton's gae/lti-tool_canvas-api-proxy branch.

One significant caution, however, is that the LTI is not portable across all three Canvas instances (Production, Beta, Test) without thoughtful configuration. The logic of this is clear: Test or Beta have no way of knowing that Production issued a valid API token to this user. Moreover, Test and Beta may well have older, less complete, or differently updated data than Production, causing 404 errors (at best).

One approach to this is to leverage the HTTP_ORIGIN header, although doing this while also dancing the third-party cookie dance to get sessions set up is a little tricky. An example of this can be found in the Planner LTI. In this case, when the HTTP_ORIGIN header is available but also while we are in the LTI launch-initiated PHP session we store the provided HTTP_ORIGIN in the session for future use when it will not be provided (e.g. by a JavaScript call to the API Proxy.)

Of particular note is the closing line of the definition which closes the session that was manually opened, potentially so that groton-school/slim-lti-partititoned-session can reopen it as part of the middleware stack.