Olu*_*aga 3 permissions google-api google-apps-script google-developers-console
我正在尝试使用google-apps-script为Google课堂创建扩展,但是我似乎遇到了权限问题-“呼叫者没有权限”。有人可以告诉我为什么会这样以及我需要做什么
我尝试访问了由谷歌云平台提供的所有库,希望其中之一提供所有必需的权限,但无济于事。
function listCourses() {
  var optionalArgs = {
    pageSize: 10
  };
  var response = Classroom.Courses.list(optionalArgs);
  var courses = response.courses;
  if (courses && courses.length > 0) {
    for (i = 0; i < courses.length; i++) {
      var course = courses[i];
      Logger.log('%s (%s)', course.name, course.id);
      var submissions = Classroom.Courses.CourseWork.list(course.id, optionalArgs);
      for (i = 0; i < submissions.length; i++) {
        var submission = submissions[i];
        Logger.log('%s', submission);
      }
    }
  } else {
    Logger.log('No courses found.');
  }
}
Run Code Online (Sandbox Code Playgroud)
该代码旨在列出特定课程中课程的课程ID
该解决方案涉及做两件事-
appsscript.json)Code.gs文件appsscript.json)此处适用于此任务的Classroom API参考。
看起来即使启用了高级Google服务...,您也只会添加以下OAuth范围-
您可以通过导航到“ 文件”>“项目属性”>“范围”来查看这些内容。
但是,当您从文档链接尝试“ API”时,在“ 凭据”>“ Google OAuth 2.0”标签下,它会显示另外4个完全不同的OAuth范围;这些如下-
您需要在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"
],
Run Code Online (Sandbox Code Playgroud)
注意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"
}
Run Code Online (Sandbox Code Playgroud)
Code.gs文件拥有正确的权限后,您就可以随意使用实际的代码了-您最初共享的代码缺少一些组件,而我已经对其进行了修改以使其在此处工作-
function listCourses() {
  var optionalArgs = {
    pageSize: 10
  };
  var response = Classroom.Courses.list(optionalArgs);
  var courses = response.courses;
  if (courses && courses.length > 0) {
    for (var i = 0; i < courses.length; i++) {
      var course = courses[i];
      Logger.log('%s (%s)', course.name, course.id);
      var submissions = Classroom.Courses.CourseWork.list(course.id, optionalArgs);
      for (var j = 0; j < submissions.courseWork.length; j++) {
        var submission = submissions.courseWork[j];
        Logger.log('%s', submission);
      }
    }
  } else {
    Logger.log('No courses found.');
  }
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助:),但我实际上不知道为什么这些范围不会自动添加,也许会给Google带来麻烦。
编辑说明:更正的语法错误
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           129 次  |  
        
|   最近记录:  |