Ini adalah panduan ketujuh dalam seri panduan add-on Classroom.
Dalam panduan ini, Anda akan menambahkan perilaku ke aplikasi web untuk membuat lampiran
add-on dari luar Google Classroom. Gunakan perilaku ini untuk mengizinkan pengguna membuat lampiran add-on dari produk atau situs Anda yang sudah ada. Ini juga
merupakan tambahan yang bagus untuk integrasi CourseWork
karena Anda mengarahkan traffic
yang ada ke pengalaman pengguna yang lebih baik yang ditawarkan oleh add-on Anda tanpa mengubah
alurnya. Proses yang disarankan dibacakan di halaman panduan Membuat lampiran
di luar Classroom.
Anda juga akan menambahkan perilaku ke add-on untuk mengubah tugas dengan lampiran add-on secara terprogram. Anda dapat mengubah tugas apa pun yang memiliki salah satu lampiran add-on Anda, terlepas dari siapa yang membuat tugas. Fitur ini sangat berguna untuk menyerahkan tugas setelah siswa menyelesaikan aktivitas, sehingga memberi sinyal kepada pengajar bahwa tugas yang diberikan telah selesai dan tugas siswa siap ditinjau.
Anda memperluas versi final add-on yang mendukung lampiran jenis konten atau lampiran jenis aktivitas. Lampiran jenis konten digunakan dalam panduan ini.
Tambahkan cakupan OAuth pengelolaan penetapan
Pastikan aplikasi Anda meminta cakupan berikut:
https://www.googleapis.com/auth/classroom.addons.teacher
https://www.googleapis.com/auth/classroom.addons.student
https://www.googleapis.com/auth/classroom.coursework.students
Cakupan classroom.coursework.students
belum pernah diperlukan sebelumnya, dan
digunakan untuk membuat atau mengubah tugas CourseWork
. Tambahkan cakupan ini ke daftar cakupan di Google Workspace Marketplace SDK, layar izin OAuth, dan kode server Anda untuk project Cloud.
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",
]
Membuat tugas di Classroom
Menambahkan tombol ke halaman web non-iframe
Alur yang dijelaskan dalam panduan ini memungkinkan pengguna membuat
tugas dan lampiran Google Classroom dari produk non-Google. Pada
praktiknya, hal ini kemungkinan besar berasal dari situs atau aplikasi Anda yang sudah ada. Untuk contoh ini, Anda perlu membuat laman web tiruan untuk bertindak sebagai situs eksternal. Anda memerlukan tombol
atau link yang, saat diklik, akan membuka rute baru yang menjalankan alur
CourseWork
yang disarankan untuk membuat penetapan baru.
Anda juga harus menambahkan tombol atau link untuk memungkinkan pengguna login jika Anda belum memilikinya. Anda akan memerlukan kredensial pengguna untuk membuat permintaan API berikutnya, sehingga pengguna harus menyelesaikan handshake OAuth 2.0. Lihat panduan login untuk mendapatkan panduan khusus.
Python
Contoh Python yang diberikan mengubah rute /index
yang diperkenalkan
dalam langkah panduan pertama.
<!-- /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>
Tambahkan template HTML untuk mewakili tujuan di situs Anda. Halaman ini
akan mewakili konten yang akan dilampirkan ke tugas
CourseWork
Anda.
<!-- /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>
Buat file modul Python baru untuk menangani rute terkait CourseWork.
Ini adalah coursework_routes.py
dalam contoh yang diberikan. Tambahkan tiga rute berikut; perhatikan bahwa Anda akan mengisi beberapa konten nanti.
# /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")
Memeriksa kelayakan pembuatan add-on pengguna
Ada beberapa prasyarat yang harus dipenuhi pengguna sebelum Anda dapat membuat
lampiran add-on atas nama mereka. Untuk memudahkan, Google menyediakan
metode courses.checkAddOnCreationEligibility
untuk menentukan apakah pengguna
memenuhi prasyarat ini. Pengguna yang memenuhi prasyarat disebut sebagai pengguna yang memenuhi syarat.
Tambahkan pemeriksaan kelayakan ke penerapan rute pembuatan CourseWork
.
Kemudian, uji kolom isCreateAttachmentEligible
dalam respons. Bagi pengguna
yang memenuhi syarat, ikuti logika untuk membuat tugas dengan lampiran
add-on. Jika tidak, buat Materi
Link. Anda harus mengetahui ID kursus tempat
pengguna ingin membuat tugas. Biasanya, Anda akan meminta pengguna
menentukan materi mana yang akan digunakan. Untuk mempermudah, kami menggunakan nilai hard code dalam contoh ini.
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.
Membuat tugas dengan lampiran add-on untuk pengguna yang memenuhi syarat
Jika pengguna memenuhi syarat untuk membuat lampiran add-on, lakukan hal berikut:
- Kirim permintaan API untuk membuat
courseWork
tugas di Google Classroom dengan tanpa lampiran. - Ekstrak
id
tugas yang baru dibuat. - Membuat CourseWork
AddOnAttachment
baru. - Kirim permintaan untuk membuat lampiran add-on pada tugas yang baru dibuat di 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()
)
Membuat Materi Link
Jika pengguna tidak memenuhi syarat untuk membuat lampiran add-on, buat Materi Link dengan melakukan hal berikut:
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()
)
Mengubah tugas yang sudah dibuat
Anda dapat mengakses, mengubah, menyerahkan, mengklaim kembali, atau mengembalikan item aliran data Google Classroom
yang memiliki setidaknya salah satu lampiran add-on, terlepas dari siapa
yang membuat item aliran data. Item aliran adalah Announcement
, tugas CourseWork
, atau CourseWorkMaterial
.
Untuk mendemonstrasikan ini, Anda akan menambahkan rute untuk mengubah item aliran data yang ditentukan. Gunakan metode ini untuk memverifikasi bahwa Anda dapat mengakses dan mengubah item forum yang dibuat oleh Anda menggunakan API dan yang dibuat oleh pengajar melalui UI Google Classroom.
Tambahkan satu link atau tombol lagi ke halaman web yang pertama kali Anda edit dalam panduan ini. Tindakan ini akan membuka rute baru untuk mengubah penetapan CourseWork
.
Python
Contoh Python yang diberikan memodifikasi rute /index
yang telah diubah
sebelumnya dalam panduan ini.
<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>
Buat rute baru untuk menangani rute terkait CourseWork. Ini ada dalam
file coursework_routes.py
dalam contoh yang diberikan.
# 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()
)
Menguji add-on
Agar lebih praktis, contoh yang diberikan menggunakan ID kursus dan tugas hard code. Anda bisa mendapatkan ID ini dengan membuat permintaan menggunakan
kredensial pengajar ke metode get
dan list
dari referensi
courses
dan
courseWork
. Nilai tersebut juga ditampilkan sebagai respons saat membuat
tugas courseWork
.
Pembuatan Materi Link Pengujian
Jalankan server Anda, lalu buka halaman indeks dan login sebagai pengguna pengajar tanpa lisensi Google Workspace for Education Teaching & Learning atau Plus. Anda dapat mengalihkan status lisensi pengguna dari konsol Admin domain pengujian.Klik tombol Create a CourseWork Assignment, lalu buka UI Google Classroom dan verifikasi bahwa tugas dengan lampiran Link Material telah dibuat. Lampiran harus menunjukkan judul laman web yang ditautkan dan sebuah URL.
Menguji pembuatan lampiran add-on
Kembali ke halaman indeks dan login sebagai pengguna pengajar dengan lisensi Google Workspace for Education Teaching& Learning atau Plus. Klik tombol Create a CourseWork Assignment, lalu buka UI Google Classroom dan pastikan tugas dengan lampiran add-on telah dibuat. Lampiran harus menampilkan nama aplikasi add-on dan judul yang ditentukan dalam kode Anda.
Perubahan tugas pengujian
Kembali ke halaman indeks dan pastikan Anda login sebagai pengguna pengajar dengan lisensi Teaching & Learning atau Plus. Klik tombol Modify a CourseWork Assignment, lalu kembali ke UI Google Classroom dan pastikan judul tugas telah diubah.
Selamat! Anda telah menyelesaikan rangkaian panduan.