Harici ekler ve teslim etme

Bu, Classroom eklentilerindeki adım adım açıklamalı yedinci kılavuzdur. size yol gösterir.

Bu adım adım açıklamalı kılavuzda, eklenti oluşturmak için bir web uygulamasına e-posta eklerini gönderin. Bu davranışı kullanarak Kullanıcılar mevcut ürününüzden veya web sitenizden eklenti ekleri oluşturur. Bu Mevcut kampanyaları doğrudan yönlendirdiğiniz için CourseWork entegrasyonuna harika bir ve eklentinizin sunduğu iyileştirilmiş kullanıcı deneyimi sayesinde, takip edebilirsiniz. Önerilen işlem, Ek oluşturma sayfasını ziyaret edin.

Ayrıca, eklentiyi kullanarak bir atamayı değiştirmek için eklentinize davranış da eklersiniz. ekleyebilirsiniz. Aşağıdakilerden birini içeren herhangi bir ödevi değiştirebilirsiniz: eklenti eklerinizi kullanabilirsiniz. Bu özellikle, öğrenci belli bir ödevi tamamladıktan sonra ödevleri teslim öğretmene atanan görevlerin tamamlandığına dair sinyal vererek ve öğrencinin çalışması incelenmeye hazır.

Eklentinizin content-type veya activity-type ekler. Bu kılavuzdaki içerik türü eki kullanılmıştır.

Ödev yönetimi OAuth kapsamını ekleme

Uygulamanızın aşağıdaki kapsamları istediğinden emin olun:

  • https://www.googleapis.com/auth/classroom.addons.teacher
  • https://www.googleapis.com/auth/classroom.addons.student
  • https://www.googleapis.com/auth/classroom.coursework.students

classroom.coursework.students kapsamına daha önce ihtiyaç duyulmamıştı ve şu anda CourseWork atamayı oluşturmak veya değiştirmek için kullanılır. Bu kapsamı listelere ekleyin kapsamlarının Google Workspace Marketplace SDK'sı, OAuth izin ekranı ve sunucu kodu yerine kullanılabilir.

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",
  ]

Classroom'da ödev oluşturma

iframe içermeyen web sayfalarına düğme ekleme

Bu adım adım açıklamalı kılavuzda açıklanan akış, kullanıcının Google'a ait olmayan bir üründen alınan Google Classroom ödevleri ve ekleri. İçinde mevcut web siteniz veya uygulamanız olabilir. Bu örnekte harici bir site olarak işleyecek bir web sayfası oluşturma örneği oluşturmanız gerekir. Düğmenin olması gerekir veya bağlantı tıklandığında, önerilen işlemi gerçekleştiren yeni bir rota açan CourseWork akışını tıklayın.

Ayrıca, kullanıcının oturum açmasına izin vermek için bir düğme veya bağlantı eklemeniz gerekir: CANNOT TRANSLATE Sonraki Bu nedenle, OAuth 2.0 el sıkışmasını tamamlamaları gerekir. Bkz. oturum açma adım adım açıklamalı kılavuzu inceleyin.

Python

Sağlanan Python örneği, sunulan /index rotasını değiştirir Buradaki ilk adım adım açıklamalı kılavuz adımına göz atı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>

Web sitenizdeki bir hedefi temsil edecek bir HTML şablonu ekleyin. Bu sayfa CourseWork öğesine eklenecek içeriği temsil eder atama.

<!-- /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>

CourseWork ile ilgili rotaları işlemek için yeni bir Python modül dosyası oluşturun. Sağladığımız örneğimizde bu, coursework_routes.py. Aşağıdakileri ekleyin: üç rota; içeriğin bir kısmını daha sonra dolduracağınızı unutmayın.

# /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")

Kullanıcının eklenti oluşturmaya uygunluğunu kontrol etme

Hesap oluşturmadan önce bir kullanıcının karşılaması gereken birkaç ön koşul vardır eklerini ekleyebilirsiniz. Kolaylık sağlamak için Google courses.checkAddOnCreationEligibility yöntemini kullanarak kullanıcının karşılayıp karşılamadığını görmeye yarar. Ön koşulları karşılayan kullanıcıya uygun bir kullanıcı olması gerekir.

CourseWork oluşturma rotası uygulamasına uygunluk kontrolünü ekleyin. Ardından yanıttaki isCreateAttachmentEligible alanını test edin. Uygunlar için eklenti içeren bir ödev oluşturmak için ekli. Aksi durumda Bağlantı oluşturun Malzeme. Kursun kimliğini şurada belirtmeniz gerekir: ödev oluşturmak istiyor. Normalde, bu mesajı belirtebilirsiniz. Kolaylık sağlaması açısından açıklayacağım.

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.

Uygun kullanıcılar için eklenti eki olan bir ödev oluşturma

Kullanıcı, eklenti eki oluşturmaya uygunsa aşağıdakileri yapın:

  1. Şurada courseWork ataması oluşturmak için API isteği gönderin: Eksiz Google Classroom.
  2. Yeni oluşturulan ödevden id öğesini çıkarın.
  3. Yeni bir CourseWork AddOnAttachment oluşturun.
  4. Yeni oluşturulan dosyada eklenti eki oluşturma isteği Google Classroom'da ödev.

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()
  )

Kullanıcı, eklenti eki oluşturmaya uygun değilse bir bağlantı oluşturun. Bunun yerine aşağıdakileri yaparak materyal oluşturabilirsiniz:

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()
    )

Daha önce oluşturulmuş bir ödevi değiştirme

Herhangi bir Google Classroom'a erişebilir, bu Classroom'u değiştirebilir, teslim edebilir, geri alabilir veya Classroom'u geri verebilirsiniz eklenti eklerinizden en az birine sahip akış öğesi akış öğesini oluşturdu. Akış öğeleri: Announcement, CourseWork atama veya CourseWorkMaterial.

Bunu göstermek amacıyla belirli bir akış öğesini değiştirecek bir rota ekleyeceksiniz. Bunu kullan oluşturduğunuz akış öğelerine erişebileceğinizi ve bu öğeleri değiştirebileceğinizi doğrulama yöntemi API kullanılarak ve Google Classroom kullanıcı arayüzü üzerinden bir öğretmen tarafından oluşturulur.

İlk düzenlediğiniz web sayfasına bir bağlantı veya düğme daha ekleyin bu adım adım açıklamalı kılavuzu inceleyin. Bir CourseWork üzerinde değişiklik yapmak için yeni bir rota açılmalıdır atama.

Python

Sağlanan Python örneği, değiştirilen /index rotasını değiştirir bu adım adım açıklamalı kılavuzun önceki bölümlerinde bulabilirsiniz.

<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>

CourseWork ile ilgili rotaları işlemek için yeni bir rota oluşturun. Bu, coursework_routes.py dosyası oluşturun.

# 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()
)

Eklentiyi test etme

Basit bir örnek vermek gerekirse, verilen örneklerde atama tanımlayıcıları. Bu tanımlayıcıları, courses ve get ile list yöntemleri için öğretmen kimlik bilgileri courseWork kaynakları hakkında daha fazla bilgi edinin. Oluşturulduğunda da courseWork ödev.

Sunucunuzu çalıştırın, ardından dizin sayfanıza gidin ve öğretmen kullanıcısı olarak oturum açın Google Workspace for Education Teaching & Learning veya Plus lisansı. Şu ayarları açıp kapatın: kullanıcının lisans durumu hakkında daha fazla bilgi edinin. Yönetici konsolu'nda yer alan CourseWork Ödevi Oluştur seçeneğini tıklayın. düğmesini tıklayın, ardından Google Classroom kullanıcı arayüzünü açın ve Bağlantı Materyali eki oluşturuldu. Ekte bağlantı verilen web sayfası ve bir URL.

Eklenti eki oluşturmayı test etme

Dizin sayfasına dönün ve Google Workspace for Education Teaching sitesi ile öğretmen kullanıcısı olarak oturum açın &amp; Learning veya Plus lisansı. Create a CourseWork Assignment'ı (Kurs Çalışması Ödevi Oluştur) tıklayın düğmesini tıklayın, ardından Google Classroom kullanıcı arayüzünü açın ve bir eklenti eki oluşturuldu. Ek, eklenti uygulamanızı ve kodunuzda belirtilen başlığı girmeniz gerekir.

Atama değişikliğini test et

Dizin sayfasına dönün ve öğretmen kullanıcısı olarak oturum açtığınızdan emin olun Teaching & Learning veya Plus lisansı. Bir Kurs Çalışmasını Değiştirin Ödev düğmesini tıklayın, ardından Google Classroom kullanıcı arayüzüne dönün ve ödev başlığı değiştirildi.

Tebrikler! Adım adım açıklamalı kılavuz serisini tamamladınız.