我正在尝试使用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/