Questa è la settima procedura dettagliata per i componenti aggiuntivi di Classroom di una serie di procedure dettagliate.
In questa procedura dettagliata, aggiungerai un comportamento a un'applicazione web per creare un componente aggiuntivo
allegati esterni a Google Classroom. Utilizza questo comportamento per consentire
Gli utenti creano allegati di componenti aggiuntivi dal tuo prodotto o sito web esistente. Questo è
è un'ottima valida aggiunta a un'integrazione CourseWork
perché indirizzi i clienti esistenti
il traffico verso la migliore esperienza utente offerta dal tuo componente aggiuntivo senza modificare
il loro flusso. La procedura suggerita è illustrata nella nostra sezione Creare allegati
al di fuori di Classroom.
Puoi anche aggiungere un comportamento al componente aggiuntivo per modificare un'assegnazione con un componente aggiuntivo allegati in modo programmatico. Puoi modificare qualsiasi compito che abbia uno dei seguenti agli allegati dei componenti aggiuntivi, indipendentemente da chi ha creato il compito. Questo è particolarmente utile consegnare i compiti dopo che gli studenti hanno completato attività, per segnalare all'insegnante che le attività assegnate sono state completate il lavoro dello studente è pronto per la revisione.
Espandi la versione finale del componente aggiuntivo che supporta content-type o allegati di tipo attività. L'allegato content-type viene utilizzato in questa guida.
Aggiungere l'ambito OAuth per la gestione delle assegnazioni
Assicurati che la tua applicazione richieda i seguenti ambiti:
https://www.googleapis.com/auth/classroom.addons.teacher
https://www.googleapis.com/auth/classroom.addons.student
https://www.googleapis.com/auth/classroom.coursework.students
L'ambito classroom.coursework.students
non era necessario in precedenza e viene
utilizzato per creare o modificare CourseWork
assegnazioni. Aggiungi questo ambito agli elenchi
di ambiti nel progetto Cloud
SDK Google Workspace Marketplace, schermata per il consenso OAuth e le tue
il codice del server.
Python
SCOPES = [
"https://www.googleapis.com/auth/classroom.addons.teacher",
"https://www.googleapis.com/auth/classroom.addons.student",
"https://www.googleapis.com/auth/classroom.coursework.students",
]
Creare un compito in Classroom
Aggiungere pulsanti a una pagina web non iframe
Il flusso descritto in questa procedura dettagliata consente a un utente di creare
Compiti e allegati di Google Classroom da un prodotto non Google. Nel
questo è probabilmente il tuo sito web o la tua applicazione esistente. Per questo esempio,
devi creare una pagina web fittizia che funga da sito esterno. È necessario un pulsante
o un link che, se selezionato, apre un nuovo percorso che esegue il
flusso CourseWork
per creare un nuovo compito.
Dovrai anche aggiungere un pulsante o un link per consentire all'utente di accedere se non ne hai già uno. Ti serviranno le credenziali utente per effettuare le Richieste API, quindi devono completare l'handshake OAuth 2.0. Controlla le procedura dettagliata per indicazioni specifiche.
Python
L'esempio Python fornito modifica la route /index
che è stata introdotta
nel primo passaggio della procedura dettagliata.
<!-- /webapp/templates/index.html -->
<a href="clear-credentials.html">Logout</a>
<a href="start-auth-flow.html">Login</a>
<br>
<a href="create-coursework-assignment.html">Create a CourseWork Assignment</a>
Aggiungi un modello HTML per rappresentare una destinazione nel tuo sito web. Questa pagina
rappresenterà i contenuti che verranno allegati al tuo CourseWork
compito.
<!-- /webapp/templates/example-coursework-assignment.html -->
<h1>CourseWork assignment loaded!</h1>
<p>You've loaded a CourseWork assignment! It was created from an external web page.</p>
Crea un nuovo file di modulo Python per gestire le route relative a CourseWork.
Questo è coursework_routes.py
nell'esempio fornito. Aggiungi quanto segue
tre route: tieni presente che inserirai alcuni dei contenuti in un secondo momento.
# /webapp/coursework_routes.py
@app.route("/create-coursework-assignment")
def create_coursework_assignment():
"""
Completes the assignment creation flow.
"""
# Check that the user is signed in. If not, perform the OAuth 2.0
# authorization flow.
credentials = get_credentials()
if not credentials:
return start_auth_flow("coursework_assignment_callback")
# Construct the Google Classroom service.
classroom_service = get_classroom_service()
pass # To be completed later.
@app.route("/example-coursework-assignment/<assignment_type>")
def example_coursework_assignment(assignment_type):
"""
Renders the "example-coursework-assignment.html" template.
"""
return flask.render_template(
"example-coursework-assignment.html", assignment_type=assignment_type
)
@app.route("/coursework-assignment-callback")
def coursework_assignment_callback():
"""
Completes the OAuth 2.0 handshake and stores credentials in the session.
This is identical to the callback introduced in the sign-in walkthrough,
but redirects the user to the index page instead of the attachment
discovery page.
"""
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
CLIENT_SECRETS_FILE,
scopes=SCOPES,
state=flask.session["state"],
redirect_uri=flask.url_for("coursework_assignment_callback", _external=True),
)
flow.fetch_token(authorization_response=flask.request.url)
credentials = flow.credentials
flask.session["credentials"] = session_credentials_to_dict(
credentials
)
# Close the current window and redirect the user to the index page.
return flask.render_template("close-me.html", redirect_destination="index")
Verificare l'idoneità di un utente alla creazione di componenti aggiuntivi
Esistono diversi prerequisiti che un utente deve soddisfare prima di poter creare
allegati di componenti aggiuntivi per conto loro. Per praticità, Google fornisce
Metodo courses.checkAddOnCreationEligibility
per determinare se un utente
soddisfa questi prerequisiti. Un utente che soddisfa i prerequisiti viene definito come
Un utente idoneo.
Aggiungi la verifica di idoneità all'implementazione del percorso di creazione di CourseWork
.
Testa quindi il campo isCreateAttachmentEligible
nella risposta. Per l'idoneità
Gli utenti devono seguire la logica per creare un compito con
allegato. Altrimenti, crea un link
Materiale. Dovrai conoscere l'ID del corso in
per cui l'utente vuole creare un'assegnazione. Di solito, chiederai all'utente di
per specificare quale corso utilizzare. Per semplicità, utilizziamo un valore hardcoded in
in questo esempio.
Python
# /webapp/coursework_routes.py
@app.route("/create-coursework-assignment")
def create_coursework_assignment():
"""
Completes the assignment creation flow.
"""
# ... Check that the user is signed in and get the Classroom service ...
# The ID of the course to which the assignment will be added.
course_id = 1234567890 # TODO(developer) Replace with an actual course ID.
# Check whether the user can create add-on attachments.
eligibility_response = (
classroom_service.courses()
.checkAddOnCreationEligibility(courseId=course_id)
.execute()
)
is_create_attachment_eligible = eligibility_response.get("isCreateAttachmentEligible")
if is_create_attachment_eligible:
# See the "Create an assignment with add-on attachment for eligible users" section for implementation.
if not is_create_attachment_eligible:
# See the "Create a Link Material" section for implementation.
Creare un compito con un allegato di un componente aggiuntivo per gli utenti idonei
Se l'utente è idoneo a creare allegati di componenti aggiuntivi:
- Invia una richiesta API per creare un'assegnazione
courseWork
in Google Classroom senza allegati. - Estrai il valore
id
del compito appena creato. - Crea un nuovo CourseWork
AddOnAttachment
. - Invia una richiesta per creare un allegato del componente aggiuntivo sul server un compito in Google Classroom.
Python
# /webapp/coursework_routes.py
if is_create_attachment_eligible:
# Create an assignment.
coursework = {
"title": "My CourseWork Assignment with Add-on Attachment",
"description": "Created using the Classroom CourseWork API.",
"workType": "ASSIGNMENT",
"state": "DRAFT", # Set to 'PUBLISHED' to assign to students.
}
# Issue a request to create the assignment.
create_assignment_response = (
classroom_service.courses()
.courseWork()
.create(courseId=course_id, body=coursework)
.execute()
)
# Create an add-on attachment that links to the selected content and
# associate it with the new assignment.
content_url = flask.url_for(
"example_coursework_assignment",
assignment_type="add-on-attachment",
_scheme="https",
_external=True,
)
# Construct an AddOnAttachment instance.
attachment = {
"teacherViewUri": {"uri": content_url},
"studentViewUri": {"uri": content_url},
"title": f'Test Attachment for Assignment {create_assignment_response.get("id")}',
}
# Issue a request to create the attachment.
add_on_attachment_response = (
classroom_service.courses()
.courseWork()
.addOnAttachments()
.create(
courseId=course_id,
itemId=create_assignment_response.get("id"), # ID of the new assignment.
body=attachment,
)
.execute()
)
Crea un materiale per il link
Se l'utente non è idoneo a creare allegati di componenti aggiuntivi, crea un link Materiale nel seguente modo:
Python
if not is_create_attachment_eligible:
coursework = {
"title": "My CourseWork Assignment with Link Material",
"description": "Created using the Classroom CourseWork API.",
"workType": "ASSIGNMENT",
"state": "DRAFT", # Set to 'PUBLISHED' to assign to students.
# Specify the URL for your content as a Link Material.
"materials": [
{
"link": {
"url": flask.url_for(
"example_coursework_assignment",
assignment_type="link-material",
_scheme="https",
_external=True,
)
}
}
],
}
# Issue a request to create the assignment.
assignment_response = (
classroom_service.courses()
.courseWork()
.create(courseId=course_id, body=coursework)
.execute()
)
Modificare un compito già creato
Puoi accedere, modificare, consegnare, rivendicare o restituire qualsiasi elemento di Google Classroom
l'elemento dello streaming che ha almeno uno degli allegati del componente aggiuntivo, indipendentemente da chi
ha creato l'elemento dello stream. Gli elementi dello stream sono Announcement
, CourseWork
assegnato al compito o CourseWorkMaterial
.
Per dimostrarlo, dovrai aggiungere una route per modificare un determinato elemento dello streaming. Usa questa per verificare che tu possa accedere e modificare gli elementi flusso creati da te utilizzando l'API e creati da un insegnante tramite l'interfaccia utente di Google Classroom.
Aggiungi un altro link o pulsante alla pagina web che hai modificato per la prima volta in
questa procedura dettagliata. Dovrebbe aprire un nuovo percorso per modificare un CourseWork
compito.
Python
L'esempio Python fornito modifica la route /index
che è stata modificata
nella procedura dettagliata.
<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>
Crea un nuovo percorso per gestire i percorsi relativi a CourseWork. Questo è il
coursework_routes.py
nel nostro esempio fornito.
# Check that the user is signed in.
credentials = get_credentials()
if not credentials:
return start_auth_flow("coursework_assignment_callback")
# Get the Google Classroom service.
classroom_service = get_classroom_service()
# The ID of the course to which the assignment will be added.
# Ordinarily, you'll prompt the user to specify which course to use. For
# simplicity, we use a hard-coded value in this example.
course_id = 1234567890 # TODO(developer) Replace with an actual course ID.
assignment_id = 1234567890 # TODO(developer) Replace with an actual assignment ID.
# Retrieve details about the CourseWork assignment.
get_coursework_response = (
classroom_service.courses()
.courseWork()
.get(courseId=course_id, id=assignment_id)
.execute()
)
# Alter the current title.
assignment_title = f"{get_coursework_response.get('title')} (Modified by API request)"
# Issue a request to modify the assignment.
modify_coursework_response = (
classroom_service.courses()
.courseWork()
.patch(
courseId=course_id,
id=assignment_id,
updateMask="title",
body={"title": assignment_title},
)
.execute()
)
Testa il componente aggiuntivo
Per semplificare le cose, gli esempi forniti utilizzano corsi hardcoded e
identificatori di assegnazione. Puoi ottenere questi identificatori effettuando richieste con
le credenziali degli insegnanti ai metodi get
e list
della courses
e
courseWork
risorse. Vengono restituiti anche nella risposta durante la creazione
courseWork
compiti.
Creazione del materiale dei link di test
Esegui il server, quindi vai alla pagina dell'indice e accedi come utente insegnante senza un account Google Workspace for Education Teaching & Licenza Learning o Plus. Puoi attivare/disattivare una lo stato della licenza dell'utente dal dominio di test Console di amministrazione.Fai clic su Crea un compito del corso , apri l'UI di Google Classroom e verifica che un compito con L'allegato al materiale del link è stato creato. L'allegato deve mostrare il titolo di la pagina web collegata e un URL.
Testa la creazione dell'allegato del componente aggiuntivo
Torna alla pagina dell'indice e accedi come utente insegnante con un modello di insegnamento di Google Workspace for Education & Licenza Learning o Plus. Fai clic su Create a CourseWork Assignment (Crea un compito del corso). , apri l'UI di Google Classroom e verifica che un compito è stato creato un allegato di un componente aggiuntivo. L'allegato dovrebbe mostrare il nome del tuo dell'applicazione aggiuntiva e il titolo specificato nel codice.
Modifica dell'assegnazione di prova
Torna alla pagina dell'indice e assicurati di aver eseguito l'accesso come utente insegnante con un programma Licenza Learning o Plus. Fai clic sul pulsante Modifica un'attività del corso Compito, quindi torna alla UI di Google Classroom e verifica che il titolo del compito è stato modificato.
Complimenti! Hai completato la serie sulla procedura dettagliata.