您的用户是通过 Google Meet 使用 Google 课堂吗?请查看 Apps 脚本快速入门 - 了解如何在 Google Meet 课程中查看学生出席情况

Ruby 快速入门

完成本页其余部分所述的步骤,以创建向 Classroom API 发出请求的简单 Ruby 命令行应用。

前提条件

如需运行本快速入门,您需要满足以下前提条件:

  • Ruby 2.0 或更高版本
  • 启用了 API 的 Google Cloud Platform 项目。如需创建项目并启用 API,请参阅创建项目并启用 API
  • 桌面应用的授权凭据。如需了解如何为桌面应用创建凭据,请参阅创建凭据

  • 启用了 Google 课堂的 G Suite 教育版帐号。

第 1 步:安装 Google 客户端库

运行以下命令以安装该库:

gem install google-api-client

如需了解替代安装选项,请参阅库的安装页面

第 2 步:设置示例

在工作目录中创建一个名为 quickstart.rb 的文件,并复制以下代码:

classroom/quickstart/quickstart.rb
require "google/apis/classroom_v1"
require "googleauth"
require "googleauth/stores/file_token_store"
require "fileutils"

OOB_URI = "urn:ietf:wg:oauth:2.0:oob".freeze
APPLICATION_NAME = "Classroom API Ruby Quickstart".freeze
CREDENTIALS_PATH = "credentials.json".freeze
# The file token.yaml stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
TOKEN_PATH = "token.yaml".freeze
SCOPE = Google::Apis::ClassroomV1::AUTH_CLASSROOM_COURSES_READONLY

##
# Ensure valid credentials, either by restoring from the saved credentials
# files or intitiating an OAuth2 authorization. If authorization is required,
# the user's default browser will be launched to approve the request.
#
# @return [Google::Auth::UserRefreshCredentials] OAuth2 credentials
def authorize
  client_id = Google::Auth::ClientId.from_file CREDENTIALS_PATH
  token_store = Google::Auth::Stores::FileTokenStore.new file: TOKEN_PATH
  authorizer = Google::Auth::UserAuthorizer.new client_id, SCOPE, token_store
  user_id = "default"
  credentials = authorizer.get_credentials user_id
  if credentials.nil?
    url = authorizer.get_authorization_url base_url: OOB_URI
    puts "Open the following URL in the browser and enter the " \
         "resulting code after authorization:\n" + url
    code = gets
    credentials = authorizer.get_and_store_credentials_from_code(
      user_id: user_id, code: code, base_url: OOB_URI
    )
  end
  credentials
end

# Initialize the API
service = Google::Apis::ClassroomV1::ClassroomService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize

# List the first 10 courses the user has access to.
response = service.list_courses page_size: 10

puts "Courses:"
puts "No courses found" if response.courses.empty?
response.courses.each do |course|
  puts "- #{course.name} (#{course.id})"
end

第 3 步:运行示例代码

使用以下命令运行示例:

ruby quickstart.rb

首次运行该示例时,系统会提示您授予访问权限:

  1. 该示例会尝试在默认浏览器中打开新窗口或标签页。如果失败,请从控制台中复制网址并在浏览器中手动打开该网址。

    如果您尚未登录自己的 Google 帐号,系统会提示您登录。如果您登录了多个 Google 帐号,系统会要求您选择一个帐号用于授权。

  2. 点击接受按钮。
  3. 此示例会自动运行,您可以关闭窗口/标签页。

备注

  • 授权信息存储在文件系统中,因此后续执行时系统不会提示授权。
  • 本示例中的授权流程专为命令行应用而设计。如需了解如何在 Web 应用中执行授权,请参阅为 Web 服务器应用使用 OAuth 2.0

问题排查

本部分将介绍您在尝试运行本快速入门时可能会遇到的一些常见问题,并推荐可能的解决方案。

This app isn't verified

如果 OAuth 同意屏幕显示“此应用未经验证”警告,则表示您的应用请求的范围提供对敏感用户数据的访问权限。如果您的应用使用敏感范围,则必须完成验证流程以移除该警告和其他限制。在开发阶段,您可以通过选择 Advanced > 转到 {Project Name}(不安全)来继续忽略此警告。

File not found error for credentials.json

运行示例时,您可能会收到找不到凭据的文件,或者关于 credentials.json 的文件没有此类错误。

如上文前提条件部分所述,如果您尚未授权桌面应用凭据,则会发生此错误。如需了解如何为桌面应用创建凭据,请参阅创建凭据

创建凭据后,请确保将下载的 JSON 文件保存为 credentials.json。然后将该文件与示例快速入门代码的其余部分一起移动到工作目录。

更多详情

如需详细了解本快速入门中使用的 API,请参阅 GitHub 中的 google-api-ruyby-client 部分