- Create a virtual environment and install from requirements.txt.
virtualenv env
source env/bin/activate
pip install -r requirements.txt
Before running the testing server, you will need to create an OAUTH key and secret. On an Instructure-hosted Canvas instance, enter your Account Admin page and click Developer Keys
. Click + Developer Key
to create a new key.
In the dialog that appears, give your key a name and set the owner email to your own email address. Enter https://[my_server_url]/oauthlogin
as a redirect URI. Click "Save Key" when you are satisfied with all of the fields.
You will see your new key created in Canvas. Toggle its state from "Off" to "On" so your key is ready to use.
You may optionally enable scope enforcement when you create your developer key for Canvas. This means that people using keys derived from your developer key will only be able to access the endpoints which are listed in the enforcement list, which is good for security.
To do this, turn on Enforce Scopes
during the creation of your key. You can find the scopes you need beneath each API endpoint in the Canvas API documentation, listed after Scope:
. The format listed is the exact format you'll need to use for our settings file later.
The base template requires that url:GET|/api/v1/users/:user_id/profile
is checked. Your use of the Canvas API may require more.
Copy settings.py.template
to settings.py
in this project's directory. Open it to configure the following options:
- Set
BASE_URL
to the URL for your Canvas instance, for examplehttps://institution.instructure.com/
. Be sure to add the trailing slash! - Set
API_URL
to the URL for the API of your Canvas instance. In most cases, this is the same asBASE_URL
. Be sure to add the trailing slash! - Set
LTI_CONSUMER_KEY
andLTI_SHARED_SECRET
to any value you wish. Save this information for later, we'll use it while setting up the LTI. - Enter a random string in the
secret_key
field. This secret key is used to sign session cookies to prevent an attacker from tampering with their contents. - Set
oauth2_id
andoauth2_key
to the ID and Key that Canvas gives you, respectively. The ID is shown under the "Details" column on the Developer Keys page. The key can be shown by clicking the "Show Key" button under the ID. - Set
oauth2_uri
to the redirect URI you entered for the developer key earlier.
You may also set oauth2_scopes
if you wish. It takes a list of scope values, one for each API endpoint you will be using with the access tokens you gain. If you have scope enforcement enabled on your developer key, you must set oauth2_scopes
to a list of endpoints less than or equal to those granted to your developer key.
If you are using canvasapi, the endpoint used for each call is listed in its class reference documentation. You may click on the endpoint listing to learn the Scope:
value for the endpoint.
- Modify the model as you see fit before creating the db! SQLAlchemy can make migrating a pain.
- Here's how to use the example code:
- Change directory into the project folder. Create the database in python shell:
from views import db
db.create_all()
- If you want to look at your users table in the future, you can look at it in the python shell:
from views import Users
Users.query.all()
Here's how you run the flask app from the terminal:
export FLASK_APP=views.py
flask run
- Have the XML, consumer key, and secret ready.
- You can use the XML Config Builder to build XML.
- Navigate to the course that you would like the LTI to be added to. Click Settings in the course navigation bar. Then, select the Apps tab. Near the tabs on the right side, click 'View App Configurations'. It should lead to a page that lists what LTIs are inside the course. Click the button near the tabs that reads '+ App'.
- A modal should come up that allows you to customize how the app gets added. Change the configuration in the Configuration Type dropdown menu to 'By URL' or 'Paste XML' depending on how you have your LTI configured. If your LTI is publicly accessible, 'By URL' is recommended. From there, fill out the Name and Consumer Keys, and the Config URL or XML Configuration. Click Submit.
- Your LTI will appear depending on specifications in the XML. Currently, they get specified in the options tag within the extensions tag. Extensions can include these options:
- Editor Button (visible from within any wiki page editor in Canvas)
- Homework Submission (when a student is submitting content for an assignment)
- Course Navigation (link on the lefthand nav)
- Account Navigation (account-level navigation)
- User Navigation (user profile)
Note: If you're using Canvas, your version might be finicky about SSL certificates. Keep HTTP/HTTPS in mind when creating your XML and while developing your project. Some browsers will disable non-SSL LTI content until you enable it through clicking a shield in the browser bar or something similar.