【问题标题】:Google Classroom API modifyAttachmentsGoogle Classroom API 修改附件
【发布时间】:2016-11-13 19:15:23
【问题描述】:

在 Google Classroom API 中执行courses.courseWork.studentSubmissions.modifyAttachments 方法时,我尝试将附件添加到学生提交的内容时返回 403 错误。

GoogleJsonResponseException:  
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "@ProjectPermissionDenied The Developer Console project is not permitted to make this request.",
    "reason" : "forbidden"
  } ],
  "message" : "@ProjectPermissionDenied The Developer Console project is not permitted to make this request.",
  "status" : "PERMISSION_DENIED"
}

呼叫是从经过身份验证的学生帐户发出的,并被添加为链接资源。开发者控制台项目确实启用了 Google Classroom API,并且对 Google Classroom API 的其他调用工作正常,例如courses.listcourses.courseWork.studentSubmissions.get。我错过了什么?在 Google Classroom 文档站点中使用 Try it! 应用程序时返回相同的错误。

【问题讨论】:

    标签: google-api google-classroom


    【解决方案1】:

    修改作业/课程作业或学生提交的内容时,只有创建这些对象的开发者控制台项目才能修改它们。这意味着只有创建了相应课程作业的项目才能修改它们,否则返回 403 PERMISSION_DENIED 错误。您可以通过检查 Google 课堂课程作业响应中的 associatedWithDeveloper 属性轻松确定课程作业项是否与发出请求的开发者控制台项目相关联。

    【讨论】:

      【解决方案2】:

      我自己花了一段时间才弄清楚这一点,但我认为最好的方法是首先使用 Google Script 或使用 Classroom API 创建课程作业(即作业或问题)。然后,课程作业与正确的控制台项目相关联,您就可以从那里管理提交的内容。

      【讨论】:

      • 很遗憾,没有一种很好的方法可以与在“项目”之外创建的对象进行交互。我的妻子有一堆从她删除的主题中分离出来的东西 - 但是没有“批量删除某个主题下的所有课程”的行为,如果我编写脚本,我会遇到上述权限错误......
      【解决方案3】:

      如果最终用户不满足访问先决条件,所有 Classroom API 方法都可能返回 PERMISSION_DENIED (HTTP 403) 错误。错误随附的消息包含一条错误消息,可帮助您确定原因并指导用户采取适当的措施。

      ProjectPermissionDenied 表示请求试图修改与不同开发者控制台项目关联的资源。

      可能的操作:表明您的应用程序无法发出所需的请求。只能由创建资源的OAuth client ID 的开发者控制台项目制作。

      【讨论】:

      • 有没有办法以谷歌用户的身份直接运行函数/脚本,而不是作为“项目”(从而避免错误?)。试图找出一个好方法来帮助我妻子批量删除一个主题及其中的所有内容。
      • 你找到办法了吗?我几乎想出了一种使用 DevTools 的自动方法......只是错过了解决方案的一部分......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 2019-12-22
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多