Google Forms API传入有效Access Token仍返回401错误求助
核心排查点及解决方案:
你用的不是Access Token,是授权码
你提到的Token格式4/0AVHEtk6Kalxxxxxx是OAuth2的授权码(Authorization Code),不是真正的Access Token。真正的Access Token格式为ya29.xxxxxxxxxxxx开头的长字符串。
前端Google登录完成后,需要从认证响应中提取access_token字段,而不是code字段。如果是后端处理授权流程,需要用这个授权码向Google的token端点请求换取Access Token。验证权限范围是否正确
确认你请求的OAuth权限范围包含https://www.googleapis.com/auth/forms.responses.readonly(只读响应)或https://www.googleapis.com/auth/forms.responses(读写响应)。如果权限范围不对,即使Token有效也无法访问Forms API。检查Token有效性
把你认为正确的Token放到https://oauth2.googleapis.com/tokeninfo?access_token=你的Token接口验证:- 查看
expires_in字段确认Token是否过期 - 查看
scope字段确认是否包含Forms相关权限 - 查看
email字段确认是当前登录用户的邮箱
- 查看
核对请求头格式
确保请求头的Authorization格式完全正确:Bearer后面跟一个空格,再加上完整的Access Token,不要有多余的空格、换行或特殊字符。你的代码里格式看起来没问题,但要确认key变量存的是正确的Access Token,不是授权码。确认表单响应权限
登录用户不仅要有表单的查看权限,还要在表单的「设置」-「响应」中开启允许该用户查看响应的权限,否则即使账号有权限,API也会返回未授权。检查Google Cloud项目配置
确保你启用Forms API的Cloud项目,和你用来做OAuth登录的Client ID属于同一个项目;测试模式下,确认你确实被添加为测试用户,且Client ID的类型(Web/Android/iOS)和你的应用类型匹配。
内容的提问来源于stack exchange,提问作者clse

