Java调用Google Sheets API读取数据时遇空指针及403权限问题
解决Google Sheets API的NullPointerException和403权限错误
我之前在集成Google Sheets API的时候也踩过这俩坑,刚好能帮你分析清楚问题所在:
一、为什么client_secret.json有数据还出现NullPointerException?
你报错里的java.lang.NullPointerException at java.io.Reader.<init>(Reader.java:78),本质是代码找不到你的client_secret.json文件,导致传入Reader的InputStream是null,直接触发空指针。常见原因有这几个:
- 文件名/路径不匹配:你提到下载的是
client_services.json,但Google Sheets API的常规加载逻辑是找client_secret.json,如果代码里写的是后者,自然找不到文件。另外,加载资源时要注意路径前缀——如果是放在src/main/resources下,必须用带斜杠的绝对路径读取,比如:InputStream in = Quickstart.class.getResourceAsStream("/client_secret.json"); // 如果写成getResourceAsStream("client_secret.json"),会从当前类的包路径下找,肯定找不到 - 资源文件未被正确编译:Maven/Gradle项目中,
src/main/resources是默认资源目录,但如果刚放完文件没刷新项目,IDE可能没把它同步到编译目录(比如target/classes)。你可以去编译后的目录看看,有没有这个json文件,如果没有,刷新一下项目(比如IntelliJ里点File -> Reload All Maven Projects)。 - IDE资源目录配置错误:如果你的项目没把
src/main/resources标记为“资源根目录”,IDE会把它当成普通代码目录,不会打包到classpath里。检查一下:右键目录 -> Mark Directory as -> Resources Root。
二、403 Forbidden错误的常见原因
这个错误是Google API明确告诉你“你没有权限访问这个资源”,排查方向主要是这几个:
- 权限范围(Scope)不对:如果只是读取数据,必须包含
https://www.googleapis.com/auth/spreadsheets.readonly(或者更宽的https://www.googleapis.com/auth/spreadsheets)。如果代码里用了错误的scope(比如只加了Drive的scope),就会被拒绝访问。 - 电子表格未授权给你的账号/服务账号:
- 如果你用的是服务账号:打开
client_secret.json找到client_email字段,把这个邮箱地址添加为目标电子表格的“查看者”或“编辑者”; - 如果你用的是个人账户OAuth授权:确保你授权的那个Google账号本身有该表格的访问权限(比如表格是公开共享的,或者已经把账号添加到共享列表)。
- 如果你用的是服务账号:打开
- Credential对象初始化失败:如果授权流程没走通(比如桌面应用第一次运行没弹出授权页面,或者服务器端应用没正确获取刷新令牌),你的Credential是无效的,调用API自然会返回403。可以在代码里加日志,打印Credential的状态,确认是否正确获取到了有效凭证。
- API未真正启用:去Google Cloud Console的API库,确认Google Sheets API的状态是“已启用”——有时候可能误操作启用了其他API(比如Google Drive API),但没开Sheets API。
快速验证步骤
- 先解决空指针:在加载资源的代码前加判断,确认InputStream不为null:
InputStream in = Quickstart.class.getResourceAsStream("/client_secret.json"); if (in == null) { throw new RuntimeException("找不到client_secret.json,请检查文件路径和名称"); } - 检查Scope:确保代码里的scope列表包含正确的权限:
List<String> scopes = Arrays.asList(Scopes.SPREADSHEETS_READONLY); - 确认表格共享权限:把对应的邮箱(服务账号或个人账户)添加到表格的共享列表里。
内容的提问来源于stack exchange,提问作者user9218893
相关产品推荐
相关产品推荐

