Node.js(MacOS):如何定位删除Google磁盘认证信息并解决API授权错误
我之前帮同事解决过一模一样的问题——当你替换了新的client_secret.json,但Google的Node.js客户端还在使用本地缓存的旧认证信息时,就会触发这个unauthorized_client错误。Google OAuth2的认证数据会默认存在本地磁盘,完全不会因为你换了客户端密钥就自动更新,所以咱们得手动找到并清除这些旧缓存。
第一步:定位MacOS上的Google认证缓存目录
Google的Node.js SDK(比如googleapis库)默认把认证缓存存在用户目录下的隐藏文件夹里,路径是:
~/.credentials/
针对Calendar API的快速启动项目,缓存文件通常叫:
~/.credentials/calendar-nodejs-quickstart.json
不过你得注意,如果你自己修改过quickstart.js里的缓存路径,那文件位置会变——去代码里找这段:
const TOKEN_PATH = 'token.json';
如果是这个配置,缓存文件就在你的项目根目录下的token.json,而不是用户目录里。
第二步:删除旧的认证缓存文件
方式一:用终端快速删除
打开Terminal终端,直接执行命令删除用户目录下的所有Google认证缓存:
rm -rf ~/.credentials/
如果缓存是在项目根目录的token.json,先切换到项目文件夹再删除:
cd /你的项目路径/ rm token.json
方式二:用Finder手动删除
不想用终端的话,按下Cmd + Shift + G打开「前往文件夹」,输入~/.credentials/,回车后就能看到所有缓存文件,全选删除即可。要是缓存是项目里的token.json,直接去项目文件夹找到删掉就行。
第三步:用新账号重新授权
删掉旧缓存后,重新运行quickstart.js:
node quickstart.js
这时候会自动弹出浏览器,让你登录新的Google账号,跟着提示完成授权流程就行。新的认证信息会被保存到磁盘,之后就能正常调用Calendar API了。
额外小贴士
- 如果你经常切换不同的Google账号或客户端密钥,建议给每个项目设置独立的缓存文件名,比如:
这样不同项目的缓存不会互相干扰,省得每次都要手动删缓存。const TOKEN_PATH = 'token-my-new-project.json'; - 确认你的新
client_secret.json里的客户端ID和密钥是正确的,并且已经在Google Cloud Console里启用了Calendar API,同时把本地回调URL(一般是http://localhost:3000/或http://127.0.0.1:3000/)添加到了OAuth2客户端的授权域名列表里。
内容的提问来源于stack exchange,提问作者alex glaze

