调用Google Classroom API获取学生列表返回403权限错误如何解决
问题排查解决步骤
- 补全必须的授权作用域
调用courses.students.list接口必须要有班级花名册读取权限,你当前配置的作用域未包含该权限,需要新增CLASSROOM_ROSTERS_READONLY作用域,对应的权限字符串为https://www.googleapis.com/auth/classroom.rosters.readonly。 - 重新触发用户授权
安卓端会缓存历史授权结果,新增作用域后需要清除本地已缓存的授权凭证,让用户重新走登录授权流程,确保新的作用域生效。 - 校验登录账号权限
当前登录的谷歌账号必须为对应课程的教师、域管理员,或已被授予查看班级学生列表的权限。普通学生账号默认没有权限查询全班学生列表,也会触发403权限错误。 - 校验courseId参数正确性
确认传入的courseId与你拉取课程列表接口返回的对应课程ID一致,避免因ID错误触发权限类报错。
代码修改示例
新增授权作用域
new Scope(ClassroomScopes.CLASSROOM_COURSES_READONLY), new Scope(ClassroomScopes.CLASSROOM_GUARDIANLINKS_STUDENTS), new Scope(ClassroomScopes.CLASSROOM_PROFILE_EMAILS), new Scope(ClassroomScopes.CLASSROOM_COURSEWORK_STUDENTS_READONLY), new Scope(ClassroomScopes.CLASSROOM_PROFILE_PHOTOS), // 新增班级花名册只读权限 new Scope(ClassroomScopes.CLASSROOM_ROSTERS_READONLY)
补充常量定义(如缺失)
public static final String CLASSROOM_ROSTERS_READONLY = "https://www.googleapis.com/auth/classroom.rosters.readonly";
内容的提问来源于stack exchange,提问作者Shyam Singh
相关产品推荐
相关产品推荐

