如何解决Google Classroom API更新学生成绩时Project Permission Denied报错
Google Classroom API修改成绩PERMISSION_DENIED报错解决方案
核心原因
你遇到的@ProjectPermissionDenied报错本质是本地调用API所用的Google Cloud开发者项目,和你创建Classroom课程时绑定的开发者项目不匹配,只有课程创建时关联的对应开发者项目,才有权限修改成绩这类敏感数据。
修复步骤
- 确认你本地代码授权绑定的Google Cloud项目:打开Google Cloud控制台,进入当前使用的项目,记录项目ID和项目编号
- 重新创建关联该项目的Classroom课程:调用
courses.create接口创建课程时,必须在请求体中添加associatedWithDeveloper: true参数,且该请求需要用你当前本地使用的同一Cloud项目的授权凭证发起,新创建的课程就会和你的项目完成绑定 - 检查授权范围配置:你的
getClient()方法中必须添加修改成绩对应的权限范围,可选范围为https://www.googleapis.com/auth/classroom.coursework.students或https://www.googleapis.com/auth/classroom.grades,不要使用只读类的授权范围 - 确认授权账号身份:你OAuth登录的账号必须是对应课程的教师账号,或是对应Google Workspace的域管理员账号,学生账号没有修改学生成绩的权限
- 域账号额外校验:如果你使用的是Google Workspace域账号,需要确认域管理员已经在管理后台为你的Cloud项目开启了Classroom API的全域授权,且已经授权了上述对应的权限范围
校验方法
你可以先用本地的授权凭证调用courses.get接口,查看返回的课程信息中associatedWithDeveloper字段是否为true,如果为false则说明当前课程和你的项目没有绑定,必然无法调用修改成绩的接口。
内容的提问来源于stack exchange,提问作者Mahmud Hosen
相关产品推荐
相关产品推荐

