Java调用Google Sheets API编辑表格时遇403权限不足错误求助
解决Google Sheets API "Request had insufficient authentication scopes" 403错误
这个错误的核心原因是你的应用当前使用的OAuth2令牌缓存了旧的、权限不足的范围,或者代码中指定的范围确实不足以支持你要执行的写入操作。下面是一步步的解决方法:
1. 确认权限范围是否正确
你的代码中已经指定了正确的读写范围:
private static final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS);
SheetsScopes.SPREADSHEETS 是Google Sheets API的全读写权限范围,完全支持你执行的append写入操作,所以范围本身没问题。
2. 删除旧的令牌缓存
当你第一次运行代码时,授权后生成的令牌会存在tokens目录中(对应代码里的TOKENS_DIRECTORY_PATH)。如果之前你用的是只读范围(比如SheetsScopes.SPREADSHEETS_READONLY),或者令牌缓存了错误的权限,即使你现在改了范围,应用依然会使用旧令牌,导致权限不足。
操作步骤:
- 找到项目根目录下的
tokens文件夹,直接删除它 - 确保删除彻底,不要残留任何文件
3. 重新运行代码并授权
删除旧令牌后,再次运行你的代码,会自动弹出浏览器要求你重新授权。此时授权页面会显示应用请求的是Google表格的读写权限,点击允许即可。
授权完成后,新的令牌会重新生成在tokens目录中,你的代码就能正常执行写入操作了。
额外检查项
如果以上步骤还没解决问题,可以检查:
- 确认你的
credentials.json文件是从Google Cloud Console正确下载的,并且对应的项目已经启用了Google Sheets API - 确认你要编辑的表格确实开启了链接共享(你已经提到开启了,但可以再确认共享权限是“任何人可编辑”或至少授权了你的Google账号)
内容的提问来源于stack exchange,提问作者Prashant Bodh
相关产品推荐
相关产品推荐

