调用Google Sheets API提示缺失有效API key,能否免登录访问公开表格
问题解答
逻辑问题说明
- 你对Google Sheets API的凭证要求认知有误:即便目标表格设置为公开可查看,Google Sheets v4 API的所有调用请求都必须携带身份标识。OAuth2是用户授权读写数据时需要的凭证,公开只读场景下虽不需要用户登录、不需要配置OAuth2权限范围,但必须携带项目级的API密钥作为调用凭证,你当前的请求没有附加任何凭证,所以触发403权限错误。
免用户登录访问公开表格的实现方案
完全可以实现免用户登录访问,操作方法如下:
- 前往Google Cloud控制台创建项目,启用Google Sheets API,生成公开访问的API密钥
- 将API密钥作为
key查询参数附加到请求URL末尾即可,修改后的代码示例:
if (message.action == 'clicked') { if (!connected){ const API_KEY = '你生成的API密钥'; var user = message.user; var range = 'Teachers!A:A'; let fetch_url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}?key=${API_KEY}`; fetch(fetch_url) .then(res => res.json()) .then(res => { console.log(res); }) }; }
注意事项
- 为避免API密钥被盗用,可在Google Cloud控制台的API密钥设置页,将密钥的调用来源限制为你的Chrome扩展ID
- 该方案仅适用于公开可查看的表格,不需要用户做任何登录操作,也不需要申请OAuth2权限
内容的提问来源于stack exchange,提问作者Mike Harb
相关产品推荐
相关产品推荐

