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
相关产品推荐
相关产品推荐

