我正在尝试使用Classroom API v1在Google Apps脚本中从Google课堂访问课程作业。我按照快速入门中的步骤成功检索了我的课程列表,但是当我尝试使用以下方法访问其中一个班级的课程时:

var coursework = Classroom.Courses.CourseWork.list('valid courseId');


我收到“呼叫者没有权限”错误。不过,我可以使用API​​资源管理器成功检索课程列表。

通过使用API​​ Explorer,看起来该命令需要“ classroom.coursework.students.readonly”作用域。但是,当我在权限对话框中单击“允许”按钮时,该作用域不会添加到我的项目中。有没有一种方法可以将其添加到项目的范围列表中?我已经搜索过SO,并看到提到了其他语言(例如python)的设置范围,但没有在Apps Script中提到。我也曾在Apps脚本中看到有人提到authorizing a scope manually,但没有说明如何执行此操作。

我已经碰壁了,所以如果有人有建议,我将非常感激。谢谢。

最佳答案

最初由我在this SO thread上解决。

此任务的相应Classroom API参考为here

看起来即使启用了高级Google服务...,您也只会添加以下OAuth范围-


https://www.googleapis.com/auth/classroom.courses
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.profile.emails
https://www.googleapis.com/auth/classroom.profile.photos
https://www.googleapis.com/auth/classroom.rosters


您可以通过导航到文件>项目属性>范围来查看这些内容。

但是,当您从文档链接尝试“ API”时,在“凭据”>“ Google OAuth 2.0”标签下,它会显示4个完全不同的OAuth范围;这些如下-


https://www.googleapis.com/auth/classroom.coursework.me
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.students
https://www.googleapis.com/auth/classroom.coursework.students.readonly


您需要在Apps脚本清单文件中手动添加所有这8种。为此,请导航至查看并检查显示清单文件。在那里,您需要添加此代码,也许要在依赖项下方添加-

"oauthScopes": [
  "https://www.googleapis.com/auth/classroom.courses",
  "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
  "https://www.googleapis.com/auth/classroom.profile.emails",
  "https://www.googleapis.com/auth/classroom.profile.photos",
  "https://www.googleapis.com/auth/classroom.rosters",

  "https://www.googleapis.com/auth/classroom.coursework.me",
  "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
  "https://www.googleapis.com/auth/classroom.coursework.students",
  "https://www.googleapis.com/auth/classroom.coursework.students.readonly"
],



注意1:仅添加较新的4并不能解决问题,因为脚本将仅假定这些,而不是最初运行脚本时自动填充的原始5。

注意2:空行只是为了区分自动生成的作用域和您需要手动添加的作用域(其冗余)。


我的appsscript.json文件如下所示:您的可能会有所不同-

{
  "timeZone": "Asia/Kolkata",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "Classroom",
      "serviceId": "classroom",
      "version": "v1"
    }]
  },
  "oauthScopes": [
    "https://www.googleapis.com/auth/classroom.courses",
    "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
    "https://www.googleapis.com/auth/classroom.profile.emails",
    "https://www.googleapis.com/auth/classroom.profile.photos",
    "https://www.googleapis.com/auth/classroom.rosters",

    "https://www.googleapis.com/auth/classroom.coursework.me",
    "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
    "https://www.googleapis.com/auth/classroom.coursework.students",
    "https://www.googleapis.com/auth/classroom.coursework.students.readonly"
  ],
  "exceptionLogging": "STACKDRIVER"
}

关于google-apps-script - Google Classroom Apps脚本-CourseWork.list权限错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42796630/

10-11 23:22