在JBoss中调用Google Sheets API 4时认证失败求助
我之前折腾Google Sheets Java API的时候也碰到过一模一样的问题,给你几个实用的排查方向,一个个试下来大概率能解决:
确认client_secret.json的类型与位置
一定要下载**桌面应用(Desktop app)**类型的凭据,要是选成Web应用或其他类型,SDK根本不会触发控制台的授权URL流程。另外检查文件是不是真的放在项目根目录,文件名完全是client_secret.json,别打错字比如写成client_secrets.json或者加了多余后缀。核对依赖是否齐全
控制台授权流程需要依赖google-oauth-client-java6和google-oauth-client-jetty这两个包,要是你的项目里缺了它们,或者版本和Quickstart里的不一致,很可能直接跳过授权步骤就报错了。检查你的pom.xml(Maven)或build.gradle(Gradle)里有没有正确引入这些依赖。打印详细错误日志
有时候认证失败的错误信息被悄悄吞掉了,你可以在认证代码周围加个try-catch,把异常堆栈打出来:try { // 你的Google认证初始化代码,比如构建GoogleAuthorizationCodeFlow的部分 } catch (IOException e) { e.printStackTrace(); }这样能看到具体是找不到凭据文件、凭据无效,还是其他底层问题。
清理本地认证缓存
之前失败的认证可能留下了无效的缓存文件,默认存在~/.credentials/sheets.googleapis.com-java-quickstart这个目录里。删掉这个目录下的所有文件,再重新运行程序,强制触发全新的授权流程。检查代码里的授权参数设置
确认你有没有在GoogleAuthorizationCodeFlow.Builder里设置setAccessType("offline")和setApprovalPrompt("force")?要是没加这两个参数,SDK可能会尝试用缓存的无效凭据,而不输出新的授权URL。
要是试完这些还是不行,把你代码里的认证部分和控制台里的所有输出(哪怕是看似无关的)贴出来,这样能更快定位问题~
内容的提问来源于stack exchange,提问作者Tlink

