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

gapi/platform.js已弃用,如何适配新身份服务API调用Google Classroom?

从gapi/platform.js迁移Google Classroom API的实操方案

权限范围配置

新的Google身份服务(GIS)完全支持classroom.coursework.me这类权限,只是配置方式有所调整——不用再通过SigninOptionsBuilder多次调用setScope,直接在初始化token客户端时把所有需要的权限写在scope参数里即可:

// 页面加载完成后初始化token客户端
window.google.accounts.oauth2.initTokenClient({
  client_id: '你的客户端ID',
  scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/classroom.coursework.me',
  callback: (tokenRes) => {
    if (tokenRes.error) throw tokenRes;
    // 替换为你原有的登录后处理逻辑,传入获取到的token
    app.onSignInWithToken(tokenRes.access_token);
  },
});

// 替换原有的googleSignInStudentAuth函数
function googleSignInStudentAuth() {
  const tokenClient = window.google.accounts.oauth2.getTokenClient();
  tokenClient.requestAccessToken({prompt: 'select_account'});
}

调用Classroom API提交作业

不再依赖gapi.client,直接用原生fetch或项目中的HTTP工具类发起请求,用拿到的access token完成身份验证:

async function turnInCoursework(params) {
  const apiUrl = `https://classroom.googleapis.com/v1/courses/${params.courseId}/courseWork/${params.courseWorkId}/studentSubmissions/${params.id}:turnIn`;
  const res = await fetch(apiUrl, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${你的accessToken}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({}) // turnIn接口无需请求体,传空对象即可
  });

  if (!res.ok) {
    const err = await res.json();
    console.error(err);
    throw new Error('提交作业失败');
  }

  return await res.json();
}

关键注意事项

  • 登录Google Cloud控制台,确认你的客户端ID已加入Classroom API的授权列表
  • 权限范围的字符串和之前完全一致,无需修改,仅传递方式变更
  • GIS会自动处理token刷新逻辑,无需手动维护token过期判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:43:12