我有一个来自 Google 的 Classroom 测试帐户(也就是说,除 Classroom 之外的所有服务都被禁用)。按照https://developers.google.com/classroom/quickstart/ruby中的示例(稍作修改),我可以登录并获取有关学生课程的详细信息。
但是我想做的是在 Rails 应用程序中使用它。我正在使用omniauth-google-oauth2
and 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)