Đây là hướng dẫn hướng dẫn thứ bảy trong các tiện ích bổ sung cho Google Lớp học loạt video hướng dẫn từng bước.
Trong hướng dẫn từng bước này, bạn thêm hành vi vào một ứng dụng web để tạo tiện ích bổ sung
tệp đính kèm từ bên ngoài Google Lớp học. Sử dụng hành vi này để cho phép
người dùng tạo tệp đính kèm bằng tiện ích bổ sung từ sản phẩm hoặc trang web hiện tại của bạn. Đây là
cũng là một sự bổ sung tuyệt vời cho việc tích hợp CourseWork
vì bạn hướng dẫn
lưu lượng truy cập vào trải nghiệm người dùng được cải thiện do tiện ích bổ sung của bạn cung cấp mà không thay đổi
quy trình của họ. Quy trình đề xuất được trình bày trong phần Tạo tệp đính kèm
bên ngoài Lớp học.
Bạn cũng thêm hành vi vào tiện ích bổ sung của mình để sửa đổi bài tập bằng tiện ích bổ sung tệp đính kèm theo phương thức lập trình. Bạn có thể sửa đổi bất kỳ bài tập nào có một trong tệp đính kèm bằng tiện ích bổ sung, bất kể ai đã tạo bài tập. Đây là đặc biệt hữu ích khi nộp bài tập sau khi học sinh hoàn thành một bài hoạt động, báo hiệu cho giáo viên biết rằng các nhiệm vụ được giao đã hoàn thành và bài tập của học viên đã sẵn sàng để được xem xét.
Bạn mở rộng phiên bản cuối cùng của tiện ích bổ sung có hỗ trợ content-type hoặc tệp đính kèm loại hoạt động. Tệp đính kèm loại nội dung được sử dụng trong hướng dẫn này.
Thêm phạm vi OAuth quản lý bài tập
Đảm bảo rằng ứng dụng của bạn yêu cầu các phạm vi sau:
https://www.googleapis.com/auth/classroom.addons.teacher
https://www.googleapis.com/auth/classroom.addons.student
https://www.googleapis.com/auth/classroom.coursework.students
Trước đây, phạm vi classroom.coursework.students
không cần thiết và hiện đang
được dùng để tạo hoặc sửa đổi thông tin chỉ định CourseWork
. Thêm phạm vi này vào danh sách
thuộc phạm vi của các dự án Cloud của bạn
SDK Google Workspace Marketplace, màn hình xin phép bằng OAuth và
mã máy chủ của bạn.
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",
]
Tạo một bài tập trong Lớp học
Thêm các nút vào một trang web không có iframe
Quy trình được mô tả trong hướng dẫn này cho phép người dùng tạo
Bài tập và tệp đính kèm trong Google Lớp học trong một sản phẩm không phải của Google. Ngang bằng
đây có thể là trang web hoặc ứng dụng hiện có của bạn. Trong ví dụ này,
bạn cần tạo một trang web mô phỏng để hoạt động như một trang web bên ngoài. Bạn cần một nút
hoặc liên kết mà khi được nhấp vào sẽ mở một tuyến mới thực hiện được đề xuất
Quy trình CourseWork
để tạo bài tập mới.
Bạn cũng cần thêm nút hoặc đường liên kết để cho phép người dùng đăng nhập nếu bạn bạn chưa có số này. Bạn sẽ cần thông tin đăng nhập của người dùng để thực hiện Các yêu cầu API để những yêu cầu này phải hoàn tất cơ chế bắt tay OAuth 2.0. Xem phần đăng nhập hướng dẫn từng bước để được hướng dẫn cụ thể.
Python
Ví dụ Python đã cung cấp sửa đổi tuyến /index
đã được đưa ra
ở bước hướng dẫn từng bước đầu tiên.
<!-- /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>
Thêm mẫu HTML để đại diện cho một đích đến trong trang web của bạn. Trang này
sẽ đại diện cho nội dung sẽ được đính kèm vào CourseWork
của bạn
bài tập.
<!-- /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>
Tạo một tệp mô-đun Python mới để xử lý các tuyến liên quan đến CourseWork.
Đây là coursework_routes.py
trong ví dụ chúng tôi cung cấp. Thêm đoạn mã sau
ba tuyến; lưu ý rằng bạn sẽ điền một số nội dung sau.
# /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")
Kiểm tra điều kiện tạo tiện ích bổ sung của người dùng
Người dùng phải đáp ứng một số điều kiện tiên quyết trước khi bạn có thể tạo
tiện ích bổ sung đính kèm. Để thuận tiện, Google cung cấp
Phương thức courses.checkAddOnCreationEligibility
để xác định xem người dùng có đang sử dụng
đáp ứng các điều kiện tiên quyết này. Người dùng đáp ứng các điều kiện tiên quyết được gọi là
người dùng đủ điều kiện.
Thêm bước kiểm tra điều kiện vào quy trình triển khai tuyến tạo CourseWork
.
Sau đó, hãy kiểm thử trường isCreateAttachmentEligible
trong phản hồi. Dành cho người dùng đủ điều kiện
người dùng, hãy làm theo logic để tạo bài tập có tiện ích bổ sung
tệp đính kèm. Nếu không, hãy tạo một Đường liên kết
Tài liệu. Bạn cần biết mã nhận dạng của khoá học trong
mà người dùng muốn tạo một bài tập. Thông thường, bạn sẽ nhắc người dùng
để chỉ định khoá học nào sẽ được sử dụng. Để đơn giản, chúng tôi sử dụng một giá trị được cố định giá trị trong mã
ví dụ này.
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.
Tạo bài tập có tiện ích bổ sung đính kèm cho người dùng đủ điều kiện
Nếu người dùng đủ điều kiện tạo tệp đính kèm bằng tiện ích bổ sung, hãy làm như sau:
- Gửi yêu cầu API để tạo bài tập trong
courseWork
Google Lớp học không có tệp đính kèm. - Trích xuất
id
của bài tập mới tạo. - Tạo một CourseWork
AddOnAttachment
mới. - Gửi yêu cầu tạo tệp đính kèm bằng tiện ích bổ sung trên tệp mới tạo bài tập trong Google Lớp học.
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()
)
Tạo tài liệu liên kết
Nếu người dùng không đủ điều kiện tạo tệp đính kèm bằng tiện ích bổ sung, hãy tạo một đường liên kết Material thay vào đó bằng cách làm như sau:
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()
)
Sửa đổi bài tập đã tạo
Bạn có thể truy cập, sửa đổi, nộp, lấy lại hoặc trả lại bất kỳ nội dung nào trong Google Lớp học
mục phát trực tuyến có ít nhất một tệp đính kèm bằng tiện ích bổ sung, bất kể ai
đã tạo mục luồng. Các mục trong luồng là Announcement
, CourseWork
bất kỳ
bài tập hoặc CourseWorkMaterial
.
Để chứng minh điều này, bạn sẽ thêm một tuyến để sửa đổi một mục cụ thể trong luồng. Sử dụng bản thảo này để xác minh rằng bạn có thể truy cập và sửa đổi các mục trong luồng do chính bạn tạo bằng API và do giáo viên tạo thông qua giao diện người dùng Google Lớp học.
Thêm một nút hoặc đường liên kết khác vào trang web mà bạn chỉnh sửa lần đầu
hướng dẫn từng bước này. Thao tác này sẽ mở một tuyến mới để sửa đổi CourseWork
bài tập.
Python
Ví dụ Python đã cung cấp sửa đổi tuyến /index
đã được sửa đổi
trước đó trong phần hướng dẫn từng bước này.
<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>
Tạo một tuyến mới để xử lý các tuyến liên quan đến CourseWork. Đây là trong
coursework_routes.py
trong ví dụ chúng tôi cung cấp.
# 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()
)
Kiểm thử tiện ích bổ sung
Để đơn giản, các ví dụ được cung cấp sử dụng khoá học được cố định giá trị trong mã và
giá trị nhận dạng chỉ định. Bạn có thể lấy các giá trị nhận dạng này bằng cách tạo yêu cầu thông qua
thông tin đăng nhập của giáo viên vào phương thức get
và list
của courses
và
courseWork
tài nguyên. Chúng cũng được trả về trong phản hồi khi tạo
courseWork
bài tập.
Kiểm thử việc tạo đường liên kết
Chạy máy chủ, sau đó chuyển đến trang chỉ mục rồi đăng nhập với tư cách là người dùng là giáo viên không có Chương trình Giảng dạy & Giấy phép Learning hoặc Plus. Bạn có thể bật/tắt trạng thái giấy phép của người dùng từ miền thử nghiệm của bạn Bảng điều khiển dành cho quản trị viên.Nhấp vào nút Create a CourseWork Assignment , sau đó mở giao diện người dùng Google Lớp học rồi xác minh rằng một bài tập có Đã tạo tệp đính kèm đường liên kết Material. Tệp đính kèm phải hiển thị tiêu đề của trang web được liên kết và một URL.
Kiểm thử việc tạo tệp đính kèm bằng tiện ích bổ sung
Quay lại trang chỉ mục rồi đăng nhập với tư cách là người dùng là giáo viên có tính năng Teaching của Google Workspace for Education & Giấy phép Learning hoặc Plus. Nhấp vào nút Create a CourseWork Assignment (Tạo bài tập trên CourseWork) , sau đó mở giao diện người dùng Google Lớp học rồi xác minh rằng một bài tập đã đã tạo tệp đính kèm bằng tiện ích bổ sung. Tệp đính kèm phải hiển thị tên của ứng dụng bổ sung và tiêu đề được chỉ định trong mã của bạn.
Kiểm thử việc sửa đổi chỉ định
Quay lại trang chỉ mục và đảm bảo rằng bạn đã đăng nhập với tư cách là người dùng là giáo viên với sự giảng dạy & Giấy phép Learning hoặc Plus. Nhấp vào hộp thoại Modify a CourseWork (Sửa đổi bài học) Bài tập, sau đó quay lại giao diện người dùng Google Lớp học và xác minh rằng đã thay đổi tên bài tập.
Xin chúc mừng! Bạn đã hoàn tất loạt hướng dẫn từng bước.