Преподаватели, использующие как Classroom, так и сторонние инструменты, сталкиваются с проблемой настройки своих курсов и расписаний на разных платформах. Это можно сделать вручную, загрузив CSV-файлы или введя адреса электронной почты по одному. Однако с помощью Classroom API сторонние инструменты могут снизить нагрузку на преподавателей за счет интеграции с наиболее распространенным вариантом использования API: импортом расписания .
Импорт расписания позволяет сторонним платформам получать метаданные курса, информацию о преподавателях и студентах по каждому курсу с разрешениями преподавателя или администратора . Преподаватели могут получать информацию о курсах, которые они ведут, в то время как администраторы имеют доступ к информации обо всех курсах по всему домену . Эта гибкость позволяет разработчикам легко добавлять расписания Classroom на свою платформу как на уровне отдельных преподавателей, так и на уровне всего домена, используя учетные данные администратора.
Прежде чем углубляться в технические детали того, как может выглядеть интеграция импорта списка игроков, давайте сначала рассмотрим пример рабочего процесса:
В стороннем приложении преподаватель выбирает опцию импорта учебного курса .
Стороннее приложение вызывает метод
courses.list
через API класса, который возвращает ответ JSON со всеми курсами преподавателя.В ответе JSON стороннее приложение отображает названия курсов преподавателя, позволяя ему выбрать один из них. Приложению необходимо отслеживать идентификаторы курсов, чтобы перейти к следующему шагу.
Используя выбранный идентификатор курса, стороннее приложение вызывает методы
students.list
иteachers.list
и отображает все имена на своем веб-сайте, чтобы преподаватели могли подтвердить импорт.Используя адреса электронной почты, возвращенные в ответах в формате JSON
students.list
иteachers.list
, стороннее приложение приглашает пользователей присоединиться к недавно импортированному курсу на своей платформе.
Для каждого из методов, упомянутых в рабочем процессе, вы можете использовать API Explorer, чтобы увидеть, как именно они работают. Мы также рекомендуем ознакомиться со следующими материалами перед прочтением этого руководства:
Начиная
Прежде чем приступать к реализации импорта списка учащихся в Classroom, вам необходимо определить, какую информацию о курсе и пользователях вам потребуется получить через API. Вы можете ознакомиться с метаданными курса в справочной документации , но некоторые обязательные или общие поля перечислены ниже:
Поле | Использовать |
---|---|
идентификатор | Требуется для запросов API, извлекающих данные о студентах или преподавателях. |
имя | Рекомендуется для удобства использования пользователем, т.е. для отображения на вашем веб-сайте. |
идентификатор владельца | Требуется при импорте на уровне всего домена для правильной идентификации основного преподавателя курса. |
Эта информация о курсе извлекается на этапе courses.list
рабочего процесса, описанного выше. В этом запросе можно указать определённые параметры. Хотя для этого метода они не являются обязательными , некоторые рекомендуемые параметры:
Параметр | Использовать |
---|---|
курсШтат | Если не указать этот параметр, API вернет курсы всех шести состояний . Рекомендуем указать ACTIVE для получения курсов, которые преподаватели используют в данный момент. |
размер страницы | Преподавателям, импортирующим собственные курсы, мы рекомендуем указывать небольшое (менее 10) значение pageSize, чтобы сократить время ответа вызова API. |
pageToken | Обязательно, если вы используете постраничные запросы. |
идентификатор учителя | Рекомендуется, поскольку администраторы домена часто проводят курсы. Если не указать этот параметр, будут возвращены курсы для преподавателей по всему домену. |
поля | Рекомендуется уменьшить время ответа вызова API. |
Используя полученные ранее идентификаторы курсов, ваше приложение теперь может получить список студентов и со-преподавателей для этого курса или курсов. Этот идентификатор курса — единственный обязательный параметр запроса для teachers.list
и students.list
, но вы также можете рассмотреть возможность указания параметров pageSize
и fields
для сокращения времени отклика вызовов API.
Все доступные поля для ресурсов учащегося и преподавателя можно найти в соответствующей документации. Два наиболее часто используемых и обязательных поля находятся в поле profile
: profile.name
и profile.emailAddress
.
Поле | Использовать |
---|---|
имя.профиля | Рекомендуется для удобства использования пользователем, т.е. для отображения на вашем веб-сайте. |
профиль.адрес электронной почты | Требуется для заявлений, в которых требуется уникальная идентификация студентов. |
Чтобы получить и использовать любую из этих данных о курсе или расписании занятий из Classroom, вашему приложению потребуется запросить авторизацию у пользователей. Для реализации этого рабочего процесса необходимы три (3) области:
- https://www.googleapis.com/auth/classroom.courses.readonly
- Предоставляет доступ только для чтения к курсам Google Classroom
- https://www.googleapis.com/auth/classroom.rosters.readonly
- Предоставляет доступ только для чтения к спискам курсов Google Classroom (преподавателей и студентов)
- https://www.googleapis.com/auth/classroom.profile.emails
- Предоставляет доступ для чтения к электронной почте преподавателей и студентов.
Синхронизация списков с уведомлениями Pub/Sub
В течение учебного года списки учащихся могут меняться, поскольку учащиеся отменяют или добавляют курсы. Добавление уведомлений Pub/Sub позволит вам синхронизировать сторонние приложения с списками учащихся Classroom. Для получения уведомлений необходимо создать тему Google Cloud Pub/Sub, а затем зарегистрировать её в API Classroom. Эта регистрация представляет собой запрос к Classroom на отправку данных из указанного фида в указанную тему. Этот фид будет триггером событий для повторной синхронизации с списком учащихся Classroom.
Для использования push-уведомлений потребуется еще одна область, которую не нужно отправлять на проверку:
- https://www.googleapis.com/auth/classroom.push-notifications
- Позволяет вашему приложению регистрироваться для любой активности push-уведомлений.
Более подробную информацию об интеграции с push-уведомлениями Classroom см. в нашем руководстве по управлению push-уведомлениями .