You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Classroom Turn In API无响应且未更新提交状态问题

排查Google Classroom API TurnIn无响应问题

从以下几个核心方向逐一排查:

1. 确认OAuth权限范围是否正确

调用studentSubmissions.turnIn必须拥有对应权限,授权流程里必须请求到以下范围之一:

  • https://www.googleapis.com/auth/classroom.coursework.students(学生账号提交自身作业的权限)
  • https://www.googleapis.com/auth/classroom.coursework.me(老师账号管理作业的权限,若用老师账号操作)
    如果权限缺失,API可能静默失败或无响应,检查你的OAuth授权请求是否包含正确的scope参数。

2. 验证认证凭证有效性

  • 确认setRefreshToken传入的refresh_token属于操作对应的学生账号,且凭证未过期/未被吊销。
  • 可以手动刷新token验证有效性:
async checkTokenValidity() {
  try {
    const { credentials } = await this.oauth2Client.refreshAccessToken();
    console.log('当前有效凭证:', credentials);
  } catch (err) {
    console.error('凭证刷新失败:', err);
  }
}

如果刷新失败,说明refresh_token无效,需要重新走授权流程获取新凭证。

3. 检查参数正确性

  • 确认courseId、courseWorkId、submissionId都是正确的字符串格式,没有拼写错误或ID混淆(比如把作业ID当成提交ID)。
  • 先调用studentSubmissions.get接口验证参数是否能正常获取数据:
async getSubmission(courseId: string, courseWorkId: string, submissionId: string) {
  try {
    const res = await this.classroom.courses.courseWork.studentSubmissions.get({
      courseId,
      courseWorkId,
      id: submissionId
    });
    console.log('提交记录详情:', res.data);
    return res;
  } catch (error) {
    console.error('获取提交记录失败:', error);
  }
}

如果这个接口也无响应,说明参数或权限存在问题。

4. 禁用HTTP2测试

代码中设置了google.options({ http2: true });,部分环境下HTTP2可能存在兼容性问题,注释掉该行改用默认HTTP1协议测试。

5. 完善错误日志

当前catch块仅打印console.log(error),无法获取API错误的详细信息,修改为:

catch (error) {
  console.error('提交作业错误详情:', {
    错误信息: error.message,
    错误码: error.code,
    API响应: error?.response?.data,
    请求配置: error?.config
  });
  return false;
}

通过详细日志能快速定位问题,比如权限不足、参数无效等。

6. 确认作业状态允许提交

只有满足以下条件的作业才能调用turnIn接口:

  • 作业处于已发布状态
  • 学生的提交状态为CREATED或REVERTED(未提交/撤回状态),若已处于TURNED_IN状态,调用turnIn不会有任何效果。

内容的提问来源于stack exchange,提问作者Krinish Radadiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:35:23