Il s'agit du septième tutoriel des modules complémentaires Classroom cette série de tutoriels.
Dans ce tutoriel, vous allez ajouter un comportement à une application Web pour créer un module complémentaire
pièces jointes provenant d'autres sources que Google Classroom. Utilisez ce comportement
les utilisateurs créent des pièces jointes de module complémentaire
à partir de votre produit ou site Web existant. C'est
C'est aussi un excellent ajout à l'intégration CourseWork
, car vous dirigez
vers l'expérience utilisateur améliorée offerte par votre module complémentaire, sans la modifier
leur flux. La procédure suggérée est présentée dans la section Créer des pièces jointes
en dehors de Classroom.
Vous pouvez également ajouter un comportement à votre module complémentaire pour modifier un devoir à l'aide d'un module complémentaire. pièces jointes par programmation. Vous pouvez modifier les attributions associées à l'une des les pièces jointes du module complémentaire, quel que soit le créateur du devoir. C'est particulièrement utile pour rendre son devoir après qu'un élève a terminé activité, signalant à l'enseignant que les tâches assignées sont terminées et que le travail de l'élève est prêt à être corrigé.
Vous étendez la version finale de votre module complémentaire, qui prend en charge content-type ou pièces jointes liées au type d'activité. La pièce jointe content-type est utilisée dans ce guide.
Ajouter le champ d'application OAuth pour la gestion des attributions
Assurez-vous que votre application demande les champs d'application suivants:
https://www.googleapis.com/auth/classroom.addons.teacher
https://www.googleapis.com/auth/classroom.addons.student
https://www.googleapis.com/auth/classroom.coursework.students
Le champ d'application classroom.coursework.students
n'était pas nécessaire auparavant et est
utilisée pour créer ou modifier des attributions CourseWork
. Ajouter ce champ d'application aux listes
de champs d'application
le SDK Google Workspace Marketplace, l'écran de consentement OAuth et vos
le code du serveur.
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",
]
Créer un devoir dans Classroom
Ajouter des boutons à une page Web non iFrame
Le flux décrit dans ce tutoriel permet à un utilisateur de créer
Devoirs et pièces jointes Google Classroom à partir d'un produit autre que Google. Dans
il s'agit probablement de votre site Web ou application existant. Pour cet exemple,
vous devez créer une page web fictive
qui fera office de site externe. Vous avez besoin d'un bouton
ou lien qui, lorsque vous cliquez dessus, ouvre une nouvelle route qui exécute les suggestions
flux CourseWork
pour créer un devoir.
Vous devez également ajouter un bouton ou un lien permettant à l'utilisateur de se connecter si vous n'en avez pas encore. Vous aurez besoin des identifiants de l'utilisateur pour effectuer les Requêtes API. Elles doivent donc effectuer le handshake OAuth 2.0. Consultez la page de connexion tutoriel pour obtenir des conseils spécifiques.
Python
L'exemple Python fourni modifie la route /index
introduite
à la première étape du tutoriel.
<!-- /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>
Ajoutez un modèle HTML pour représenter une destination sur votre site Web. Cette page
représentera le contenu qui sera associé à votre CourseWork
l'attribution.
<!-- /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>
Créez un fichier de module Python pour gérer les routes associées à CourseWork.
Dans notre exemple, il s'agit de coursework_routes.py
. Ajoutez les éléments suivants :
trois itinéraires, notez que vous remplirez une partie
du contenu plus tard.
# /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")
Vérifier si un utilisateur peut créer un module complémentaire
Un utilisateur doit remplir plusieurs conditions préalables avant de pouvoir créer
des pièces jointes de
module complémentaire en leur nom. Pour plus de commodité, Google propose
La méthode courses.checkAddOnCreationEligibility
pour déterminer si un utilisateur
remplit ces conditions préalables. Un utilisateur qui remplit les conditions préalables est appelé
Un utilisateur éligible
Ajoutez la vérification d'éligibilité à l'implémentation de la route de création CourseWork
.
Testez ensuite le champ isCreateAttachmentEligible
dans la réponse. Pour les utilisateurs éligibles
les utilisateurs, suivez la logique pour créer un devoir avec un module complémentaire
pièce jointe. Sinon, créez un Lien
Support de cours. Vous devez connaître l'ID du cours dans
pour laquelle l'utilisateur souhaite
créer une attribution. Normalement, vous
demanderez à l'utilisateur
pour spécifier le cours à utiliser. Pour plus de simplicité, nous utilisons une valeur codée en dur dans
cet exemple.
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.
Créer un devoir avec une pièce jointe de module complémentaire pour les utilisateurs éligibles
Si l'utilisateur peut créer des pièces jointes de module complémentaire, procédez comme suit:
- Envoyez une requête API pour créer une attribution
courseWork
dans Google Classroom sans aucune pièce jointe. - Extrayez le
id
du devoir que vous venez de créer. - Créez un CourseWork
AddOnAttachment
. - Envoyez une demande de création d'une pièce jointe de module complémentaire au devoir dans 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()
)
Créer un support de lien
Si l'utilisateur n'est pas autorisé à créer des pièces jointes de module complémentaire, créez un lien Material en procédant comme suit:
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()
)
Modifier une attribution déjà créée
Vous pouvez accéder à n'importe quel compte Google Classroom, le modifier, le rendre ou l'annuler
élément de flux comportant au moins une pièce jointe de votre module complémentaire, peu importe qui
a créé l'élément de flux. Les éléments de flux sont de type Announcement
ou CourseWork
.
attribution, ou CourseWorkMaterial
.
Pour illustrer cela, vous allez ajouter une route permettant de modifier un élément de flux donné. Utiliser ceci pour vérifier que vous pouvez accéder aux éléments de flux que vous avez créés et les modifier à l'aide de l'API et créées par un enseignant via l'interface utilisateur de Google Classroom.
Ajoutez un autre lien ou bouton à la page Web que vous avez initialement modifiée sur
dans ce tutoriel. Il doit ouvrir une nouvelle route pour modifier un CourseWork
l'attribution.
Python
L'exemple Python fourni modifie la route /index
qui a été modifiée
plus tôt dans ce tutoriel.
<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>
Créez une route pour gérer les routes associées à CourseWork. C'est dans
coursework_routes.py
dans l'exemple fourni.
# 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()
)
Tester le module complémentaire
Pour plus de simplicité, les exemples fournis utilisent un cours et
les identifiants d'attribution. Vous pouvez obtenir ces identifiants en envoyant des requêtes avec
identifiants d'enseignant aux méthodes get
et list
de la courses
et
courseWork
ressources. Elles sont également renvoyées dans la réponse lors de la création
courseWork
devoirs.
Tester la création de Material Links
Exécutez votre serveur, puis accédez à votre page d'index et connectez-vous en tant qu'utilisateur enseignant sans Google Workspace for Education Teaching and Licence Learning ou Plus. Vous pouvez activer/désactiver l'état de la licence de l'utilisateur de votre domaine test dans la console d'administration. Cliquez sur Create a CourseWork Assignment (Créer un devoir CourseWork). , puis ouvrez l'interface utilisateur de Google Classroom et vérifiez qu'un devoir avec La pièce jointe Material du lien a été créée. La pièce jointe doit afficher le titre la page Web liée et une URL.
Tester la création de pièces jointes de module complémentaire
Revenez à la page d'index et connectez-vous en tant qu'enseignant avec un compte Google Workspace for Education Teaching & Licence Learning ou Plus. Cliquez sur le bouton Create a CourseWork Assignment (Créer un devoir CourseWork). puis ouvrez l'interface utilisateur de Google Classroom et vérifiez qu'un devoir avec une pièce jointe de module complémentaire a été créée. La pièce jointe doit indiquer le nom de votre et le titre spécifié dans votre code.
Modifier un devoir de test
Revenez à la page d'index et vérifiez que vous êtes connecté en tant qu'utilisateur enseignant avec un cours Licence Learning ou Plus. Cliquez sur le bouton Modify a CourseWork Devoir, puis revenez à l'UI de Google Classroom et vérifiez que le titre du devoir a été modifié.
Félicitations ! Vous avez terminé cette série de tutoriels.