Dies ist die siebte Schritt-für-Schritt-Anleitung zu Classroom-Add-ons. Schritt-für-Schritt-Anleitung.
In dieser Schritt-für-Schritt-Anleitung fügen Sie einer Webanwendung Verhalten hinzu, um ein Add-on zu erstellen
Anhänge außerhalb von Google Classroom. Mit diesem Verhalten können
können Nutzende Add-on-Anhänge zu Ihrem bestehenden Produkt oder von Ihrer Website erstellen. Dies ist
Das ist auch eine tolle Ergänzung für eine CourseWork
-Integration, da Sie bestehende
die Nutzer auf die von Ihrem Add-on angebotene verbesserte Nutzererfahrung leiten, ohne dass
ihren Ablauf. Das empfohlene Verfahren wird unter Anhänge erstellen
außerhalb von Classroom.
Sie können Ihrem Add-on auch Funktionen hinzufügen, um Aufgaben mit Add-ons zu ändern Anhänge programmatisch. Sie können jede Zuweisung mit einer der folgenden Optionen ändern: Add-on-Anhänge erstellen, unabhängig davon, wer die Aufgabe erstellt hat. Dies ist Dies ist besonders nützlich, um Aufgaben abzugeben, nachdem ein Schüler/Student ein damit die Lehrkraft weiß, dass die zugewiesenen Aufgaben erledigt sind die Aufgabe des Schülers/Studenten kann geprüft werden.
Sie erweitern die finale Version Ihres Add-ons, die content-type oder Anhänge vom Typ „Aktivität“. Der Inhaltstyp-Anhang wird in diesem Leitfaden verwendet.
OAuth-Bereich für Aufgabenverwaltung hinzufügen
Achten Sie darauf, dass Ihre Anwendung die folgenden Bereiche anfordert:
https://www.googleapis.com/auth/classroom.addons.teacher
https://www.googleapis.com/auth/classroom.addons.student
https://www.googleapis.com/auth/classroom.coursework.students
Der Bereich classroom.coursework.students
wurde zuvor nicht benötigt und ist
zum Erstellen oder Ändern von CourseWork
-Zuweisungen. Diesen Bereich den Listen hinzufügen
im Bereich Ihres Cloud-Projekts
Google Workspace Marketplace SDK, OAuth-Zustimmungsbildschirm und Ihre
Servercode.
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",
]
Aufgaben in Classroom erstellen
Schaltflächen zu einer Webseite ohne iFrames hinzufügen
Mit dem in dieser Schritt-für-Schritt-Anleitung beschriebenen Ablauf können Nutzer
Google Classroom-Aufgaben und -Anhänge aus einem Drittanbieterprodukt. In
Dies ist wahrscheinlich Ihre bestehende Website oder Anwendung. In diesem Beispiel
müssen Sie eine simulierte Webseite erstellen, die als externe Website fungiert. Du brauchst eine Taste
oder Link, der beim Anklicken eine neue Route öffnet, die den vorgeschlagenen
CourseWork
-Ablauf, um eine neue Aufgabe zu erstellen.
Außerdem müssen Sie eine Schaltfläche oder einen Link hinzufügen, damit sich der Nutzer anmelden kann, wenn Sie noch kein Konto haben. Für die nachfolgenden Schritte sind Nutzeranmeldedaten erforderlich. API-Anfragen, sodass sie den OAuth 2.0-Handshake abschließen müssen. Weitere Informationen finden Sie auf der Seite Anmeldung Schritt-für-Schritt-Anleitung.
Python
Im angegebenen Python-Beispiel wird die eingeführte Route /index
geändert.
erhalten Sie im ersten Schritt der Schritt-für-Schritt-Anleitung.
<!-- /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>
Fügen Sie eine HTML-Vorlage hinzu, um ein Ziel auf Ihrer Website darzustellen. Diese Seite
steht für den Inhalt, der an CourseWork
angehängt wird
Zuweisen.
<!-- /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>
Erstellen Sie eine neue Python-Moduldatei, um die auf KursWork bezogenen Routen zu verarbeiten.
In unserem Beispiel ist dies coursework_routes.py
. Folgendes hinzufügen
drei Routen erstellen: Hinweis: Einen Teil des Inhalts werden Sie später einfügen.
# /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")
Prüfen, ob der Nutzer berechtigt ist, Add-ons zu erstellen
Nutzer müssen mehrere Voraussetzungen erfüllen, damit Sie Inhalte erstellen können
Add-on-Anhänge erstellen. Der Einfachheit halber bietet Google
courses.checkAddOnCreationEligibility
-Methode, um zu bestimmen, ob ein Nutzer
diese Voraussetzungen erfüllt. Nutzer, die die Voraussetzungen erfüllen, werden als
berechtigte Nutzer sind.
Fügen Sie der Implementierung der CourseWork
-Erstellungsroute die Berechtigungsprüfung hinzu.
Testen Sie dann das Feld isCreateAttachmentEligible
in der Antwort. Für teilnahmeberechtigte
folgen Sie der Logik, um eine Zuweisung mit Add-on
Anhang. Erstellen Sie andernfalls einen Link
Material. Sie benötigen die ID des Kurses in
für die der Nutzer eine Aufgabe erstellen möchte. Normalerweise fordern Sie den Nutzer
um anzugeben, welcher Kurs verwendet werden soll. Der Einfachheit halber verwenden wir
einen hartcodierten Wert in
in diesem Beispiel.
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.
Aufgaben mit Add-on-Anhang für berechtigte Nutzer erstellen
Wenn der Nutzer berechtigt ist, Add-on-Anhänge zu erstellen, gehen Sie so vor:
- API-Anfrage senden, um eine
courseWork
-Zuweisung in zu erstellen Google Classroom mit keinen Anhängen - Extrahieren Sie die
id
der neu erstellten Zuweisung. - Erstellen Sie eine neue CourseWork-
AddOnAttachment
. - Senden Sie eine Anfrage zum Erstellen eines Add-on-Anhangs für das neu erstellte Aufgabe 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()
)
Linkmaterial erstellen
Wenn der Nutzer nicht berechtigt ist, Add-on-Anhänge zu erstellen, erstellen Sie einen Link. Gehen Sie stattdessen so vor:
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()
)
Bereits erstellte Zuweisung ändern
Sie können auf Google Classroom zugreifen, es ändern, abgeben, einfordern oder zurückgeben
Stream-Element, das mindestens eines Ihrer Add-on-Anhänge enthält, unabhängig davon, wer
hat das Streamelement erstellt. Streamelemente sind beliebige Announcement
, CourseWork
Zuweisung oder CourseWorkMaterial
.
Zur Veranschaulichung fügen Sie eine Route zum Ändern eines bestimmten Stream-Elements hinzu. Verwenden um zu prüfen, ob Sie auf die von Ihnen erstellten Streamelemente zugreifen und diese ändern können. mit der API und von einer Lehrkraft über die Google Classroom-Benutzeroberfläche erstellt.
Fügen Sie der Webseite, die Sie zuerst bearbeitet haben, einen weiteren Link oder eine weitere Schaltfläche hinzu.
dieser Schritt-für-Schritt-Anleitung. Es sollte eine neue Route geöffnet werden, um eine CourseWork
zu ändern
Zuweisen.
Python
Im angegebenen Python-Beispiel wird die geänderte Route /index
geändert.
weiter oben in dieser Schritt-für-Schritt-Anleitung.
<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>
Erstellen Sie eine neue Route für die auf CourseWork bezogenen Routen. Dies ist in der
coursework_routes.py
in unserem Beispiel.
# 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()
)
Add-on testen
Zur Vereinfachung werden in den bereitgestellten Beispielen hartcodierte Kurs- und
Zuweisungskennungen. Sie erhalten diese IDs, indem Sie Anfragen mit
Anmeldedaten der Lehrkraft an die Methoden get
und list
der courses
und
courseWork
-Ressourcen Sie werden auch in der Antwort zurückgegeben, wenn Sie
courseWork
Aufgaben.
Erstellung von Linkmaterial testen
Führen Sie Ihren Server aus, gehen Sie zu Ihrer Indexseite und melden Sie sich als Nutzer von Lehrkräften an ohne Google Workspace for Education Teaching & Learning- oder Plus-Lizenz. Sie können mit der des Nutzer-Lizenzstatus von der Admin-Konsole: Klicken Sie auf Aufgabe erstellen. Schaltfläche, öffnen Sie dann die Google Classroom-Benutzeroberfläche und überprüfen Sie, ob die Aufgabe mit einem Linkmaterial-Anhang wurde erstellt. Der Anhang sollte den Titel die verlinkte Webseite und eine URL.
Erstellen von Add-on-Anhängen testen
Kehren Sie zur Indexseite zurück und melden Sie sich als Lehrkraft an mit der Google Workspace for Education-Unterrichtsoption & Learning- oder Plus-Lizenz. Klicken Sie auf Create a CourseWork Assignment (Aufgabe erstellen). Schaltfläche, öffnen Sie dann die Google Classroom-Benutzeroberfläche und überprüfen Sie, ob eine Aufgabe mit Ein Add-on-Anhang wurde erstellt. Der Anhang sollte den Namen Add-on-Anwendung und dem im Code angegebenen Titel.
Zuweisungsänderung testen
Kehren Sie zur Indexseite zurück und vergewissern Sie sich, dass Sie als Lehrkraftnutzer angemeldet sind mit einer Lehrkraft und Learning- oder Plus-Lizenz. Klicken Sie auf den Link zum Ändern einer Kursaufgabe Aufgabe. Kehren Sie dann zur Google Classroom-Benutzeroberfläche zurück und überprüfen Sie, ob der Aufgabentitel geändert wurde.
Glückwunsch! Sie haben die Schritt-für-Schritt-Anleitung abgeschlossen.