Google Clas-s-room API 修改附件

Posted

技术标签:

【中文标题】Google Clas-s-room API 修改附件【英文标题】:Google Clas-s-room API modifyAttachments 【发布时间】:2016-11-13 19:15:23 【问题描述】:

在 Google Clas-s-room 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 Clas-s-room API,并且对 Google Clas-s-room API 的其他调用工作正常,例如courses.listcourses.courseWork.studentSubmissions.get。我错过了什么?在 Google Clas-s-room 文档站点中使用 Try it! 应用程序时返回相同的错误。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

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

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

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

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

【讨论】:

有没有办法以谷歌用户的身份直接运行函数/脚本,而不是作为“项目”(从而避免错误?)。试图找出一个好方法来帮助我妻子批量删除一个主题及其中的所有内容。 你找到办法了吗?我几乎想出了一种使用 DevTools 的自动方法......只是错过了解决方案的一部分......

以上是关于Google Clas-s-room API 修改附件的主要内容,如果未能解决你的问题,请参考以下文章

Google Clas-s-room API 列出没有注册码的课程?

(403) 请求的身份验证范围不足 - OAuth 范围 Google Clas-s-room API

如何使用他们的 API 访问 Google Clas-s-room 中的“等级类别”

如何在 php 中使用 api 从 Google Clas-s-room 中检索作业、测验分数

为啥我在使用 Google Clas-s-room API 时会收到 404 错误?

获取 Google Clas-s-room Meet 链接