You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js对接Google Sheets API授权后跳转连接拒绝报错问题

Google Sheets API Node.js OAuth授权跳转后获取不到授权码问题排查

最快临时解决方式(无需修改现有配置即可跑通)

你授权完成后浏览器跳转的报错页面,本质是本地8080端口没有服务监听导致的,Google已经把完整授权码放在了跳转后的URL里,直接按如下操作即可完成流程:

  • 查看浏览器地址栏的完整URL,提取code=参数的完整值:即为4/开头的长串内容,注意截掉后面附带的&scope、&authuser等其他参数,不要多复制无关内容。
  • 回到正在等待输入的Node.js控制台,粘贴刚才提取的授权码后按回车,即可正常完成token换取流程,不需要等待本地页面能正常访问。

问题根因

  • 你在Google Cloud后台配置的OAuth凭证属于Web应用类型,对应的重定向URIhttp://localhost:8080设计用途是让本地Node.js服务在该端口监听,自动接收Google跳转携带的授权码完成换取逻辑。
  • 当前你的Node.js进程没有在8080端口启动对应的回调接收服务,因此浏览器访问该地址时会因无服务监听报ERR_CONNECTION_REFUSED,这属于正常现象,并非授权失败。
  • 你参考的官方快速入门代码默认适配「桌面应用类凭证的手动复制授权码」模式,本身没有内置启动本地8080端口服务的逻辑,和你当前使用的Web类凭证配置不匹配,才导致控制台一直处于等待接收状态。
  • 你修改credentials读取逻辑的操作是正确的:Web应用类OAuth凭证本身不存在顶层installed字段,直接读取顶层对象的配置项不存在问题。

长期优化可选方案

方案1:适配自动回调流程(无需手动复制code)

  • 确认OAuth2客户端初始化时配置的redirectURI,和Google Cloud后台、credentials.json中记录的redirect_uris完全一致,均为http://localhost:8080。
  • 在你的Node.js代码中补充本地回调服务逻辑:用Node.js内置http模块或Express启动服务监听8080端口,注册回调路由接收URL中的code参数,调用oauth2Client.getToken(code)自动换取访问token,即可无需手动输入完成授权。
  • 启动前提前排查8080端口是否被其他进程占用,避免服务启动失败导致再次出现连接拒绝的问题。

方案2:切换为桌面应用凭证适配纯本地调试场景

如果后续仅做本地调试、不需要上线Web端OAuth接入,可以直接在Google Cloud后台新建桌面应用类型的OAuth凭证,这种凭证默认适配手动复制code的模式,授权后Google会直接在浏览器页面展示完整授权码,无需跳转本地地址,不会出现连接拒绝的问题,调试成本更低。

内容的提问来源于stack exchange,提问作者William Tuominiemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 17:36:03