0

我有一个来自 Google 的 Classroom 测试帐户(也就是说,除 Classroom 之外的所有服务都被禁用)。按照https://developers.google.com/classroom/quickstart/ruby中的示例(稍作修改),我可以登录并获取有关学生课程的详细信息。

但是我想做的是在 Rails 应用程序中使用它。我正在使用omniauth-google-oauth2and google-api-ruby-client(新的 0.9.x 分支)。从 Google 获取该测试帐户的令牌后(我已经三次检查它是这个帐户,而不是我使用的任何其他配置文件)我试图从 访问数据Google::Apis::ClassroomV1::ClassroomService,但它一直告诉我:

发送 HTTP 获取 https://classroom.googleapis.com/v1/courses?pageSize=10
403
#<Hurley::Response GET https://classroom.googleapis.com/v1/courses?pageSize=10 == 403 (319 bytes) 748ms>
禁止捕获错误:@NotGoogleAppsUser 该用户不是 Google Apps 用户。
错误 - #<Google::Apis::ClientError: 禁止:@NotGoogleAppsUser 该用户不是 Google Apps 用户。>

Google::Apis::ClientError: 禁止:@NotGoogleAppsUser 该用户不是 Google Apps 用户。

我使用的代码是:

需要 'google/apis/classroom_v1'

模块 GoogleIntegration::Client
  课堂 = Google::Apis::ClassroomV1

  def self.create(token)
    服务 = 教室::ClassroomService.new
    范围 = ['https://www.googleapis.com/auth/classroom.courses.readonly', '个人资料', '电子邮件']
    service.authorization = Google::Auth.get_application_default(范围)
    service.authorization.access_token = 令牌
    service.client_options.application_name = 'Membean 课堂示例'
    服务
  结尾

在控制器中:

服务 = GoogleIntegration::Client.create(request.env['omniauth.auth'].credentials.token)
响应 = service.list_courses(page_size: 10)
4

1 回答 1

0

根据 Classroom API Access Errors

NotGoogleAppsUser表示请求用户不属于 Google Apps 域。

可能的操作:提示用户使用“Google Apps for Education”帐户重新进行身份验证。提供使用多个帐户的链接,以便用户选择正确的帐户。

于 2016-07-20T01:44:27.850 回答