如何注册 Google Classroom API 以获取推送通知?

Hyd*_*age 0 push-notification google-oauth google-cloud-platform google-classroom

我想创建一个程序,该程序将从我的相关 Google 课堂接收通知,并利用该数据执行某些操作。如何注册 Google 课堂以对活动做出反应?我还没有做过任何东西,而且我对Google的API一无所知。我应该怎么办?

Hyd*_*age 7

注册 Google Classroom API 以获取推送通知的过程包括身份验证、授权以及解析向 Google 发送的请求以告诉您的 Classroom 发送这些推送通知。

我强烈建议您具备 Java 编程语言方面的 Google Cloud 平台的基本知识,这与我尝试执行此操作时不同。相信我...这并不好玩。我相信您会充分理解这个概念,从而能够将其转移到您选择的语言中,我在 Java 中做到了这一点,使用 IntelliJ IDEA 作为我的 IDE。

除了 Google Classroom API 之外,Google 还为其集合提供了另一项服务,称为“Pub/Sub”。Pub/Sub 代表发布者/订阅者。如果您熟悉队列的工作原理,可以将 Pub/Sub 视为一种改进的队列系统。您有一个发布者,在“主题”上发布消息,以及该主题的订阅者,该订阅者将从主题中提取消息,并选择是否“确认”该消息。确认消息会将其从队列中删除。例如,发布者代码将消息“Hello, World”发送到主题。该消息将保留在主题中,直到该主题的订阅者选择拉取消息、阅读“Hello,World”并确认该消息,因此在拉取消息时它不会再次弹出。发布者可以发送任意数量的消息。发布者可以发送 10 条消息,订阅者可以选择拉取所有消息并迭代它们,或者一次只迭代几条消息。

这适用于该系统,因为您将使用 Google Classroom API 的内置功能,该功能允许 API 充当“发布者”并向您选择的主题发送更新消息。然后,您将有一个单独的应用程序随时检查更新。为了暂时简化它,您告诉 Classroom API“请向此主题发送更新消息。我只需要当教师以任何方式编辑课程作业目录时进行更新”。Classroom API 将遵循此请求,每当教师进行编辑、发布或删除等操作时,程序都会向您的主题发送消息。

如果您的课堂发布者一天内发送了 5 条更新,您将收到 5 条可拉取的消息发送到您的主题,该主题的任何订阅程序都可以拉取并确认这些消息。

如果你还不够理解,就你的看法。请在继续之前对 Google Cloud Pub/Sub 进行一些研究,因为这样做基本上是围绕此服务进行的。

让我们一步一步地执行此操作...

  1. 创建一个新项目
  2. 启用 Classroom API 和 PubSub API
  3. 启用计费
  4. 转到“IAM 和管理”
  5. 向所有者授予“classroom-notifications@system.gserviceaccount.com”权限
  6. 使用“用户数据”为 Classroom API 和“基于 UI 的平台”设置凭据
  7. 设置同意屏幕。现在只需添加一个应用程序名称即可。
  8. 创建凭据作为“OAuth 客户端 ID”
  9. 选择应用程序类型 > 其他。不要介意客户的名字
  10. 下载 JSON 文件。将其重命名为“credentials_temp.json”
  11. 创建一个基于 Gradle 的 Java 项目(我使用的是 IntelliJ)。组 ID:临时。工件 ID:温度。项目名称:临时工
  12. 将其添加到“依赖项”下的 build.gradle
compile 'com.google.api-client:google-api-client:1.23.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-classroom:v1-rev135-1.23.0'
Run Code Online (Sandbox Code Playgroud)
  1. sourceCompatibilitybuild.gradle 中的变量设置为11
  2. 导入这些更改(右下角可能有一个小框,显示“导入更改”作为选项)
  3. 将凭证文件放在 src/main/resources 中
  4. 在 src/main/java 中,创建一个新类。将其命名为“TempTest.java”
  5. 使用我为你编写的代码
compile 'com.google.api-client:google-api-client:1.23.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-classroom:v1-rev135-1.23.0'
Run Code Online (Sandbox Code Playgroud)
  1. 转到 Google 课堂并创建您自己的课堂以进行测试。
  2. 转到 Pub/Sub 并创建一个新主题。确保其设置为“Google 管理的密钥”。制作完成后,在“主题名称”下获取其名称。有一个小按钮用于复制完整路径。
  3. 将类的 TOPIC_NAME 字段设置为包含您刚刚复制的主题名称的字符串
  4. 运行代码并在所有范围内进行授权。您将被重定向。确保您选择的帐户与使用云平台的帐户相同。
  5. 运行它会为您提供课程列表以及括号中的课程 ID 号。复制您制作的测试课程的 ID 号。运行代码后应该将其输出到控制台。
  6. 将类的 COURSE_ID 字段设置为包含您刚刚复制的 ID 的字符串
  7. 取消第 40 行的注释并再次运行代码
  8. 你已经完成了我的例子

您刚刚所做的就是对自己进行身份验证,以便 Google 知道您授予它什么权限,并且它可以验证您的身份。然后,您向 Google 发送了一个 JSON 请求,其中包含有关您希望将更新发布到哪个主题、要获取的更新类型以及从中获取这些更新的特定教室的信息。

我强烈建议您在这里了解 JSON 响应的结构是如何工作的。也许从这里开始。

谷歌文档上的这个页面有不错的信息。它还显示您将使用 Google Pub/Sub API 从另一个程序中提取的消息的 JSON 格式。我没有把它包括在这里。

谢谢你,祝你好运。抱歉,我可能会多次编辑这个问题。我现在真的很累了。