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

使用google-spreadsheet npm包时,中国VPN环境下OAuth2令牌请求失败求助

解决中国VPN环境下Google OAuth2认证失败问题

针对你遇到的Error: Request to https://www.googleapis.com/oauth2/v4/token failed错误,核心原因是Node.js未正确走VPN代理,或网络环境(DNS污染、节点质量)导致无法连接Google认证服务器,以下是可行的解决方法:

1. 强制Node.js通过VPN代理请求

Node.js默认不会继承系统代理,需手动配置:

  • 方式一:通过环境变量启动项目
    在终端启动项目时加入代理环境变量(替换为你的VPN代理地址,比如http://127.0.0.1:1080):
    HTTP_PROXY=http://你的VPN代理地址:端口 HTTPS_PROXY=http://你的VPN代理地址:端口 node your-app.js
    
  • 方式二:代码中配置代理
    使用https-proxy-agent包为google-auth-library设置代理,先安装依赖:
    npm install https-proxy-agent
    
    修改代码:
    import { JWT } from "google-auth-library";
    import { GoogleSpreadsheet } from "google-spreadsheet";
    import HttpsProxyAgent from "https-proxy-agent";
    
    // 替换为你的VPN代理地址
    const proxyAgent = new HttpsProxyAgent("http://你的VPN代理地址:端口");
    
    const serviceAccountAuth = new JWT({
      email: creds.client_email,
      key: creds.private_key,
      scopes: SCOPES,
      agent: proxyAgent, // 绑定代理
    });
    
    const doc = new GoogleSpreadsheet(googleSheetId, serviceAccountAuth);
    

2. 优化VPN节点与网络连通性

  • 切换至稳定的Google服务优化节点(如美国、新加坡节点),避免使用中转过多或被封锁的节点;
  • 测试代理有效性:用curl验证是否能连接认证服务器(即使返回400错误,只要能建立连接就说明代理有效):
    curl -x http://你的VPN代理地址:端口 https://www.googleapis.com/oauth2/v4/token
    

3. 绕过DNS污染

手动修改本地hosts文件,添加www.googleapis.com的正确IP(可通过IP查询渠道获取最新有效地址):

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • Mac/Linux:/etc/hosts
    添加示例(IP需替换为最新有效地址):
142.250.190.106 www.googleapis.com

修改后刷新DNS缓存:

  • Windows:ipconfig /flushdns
  • Mac:sudo dscacheutil -flushcache
  • Linux:sudo systemctl restart nscd

4. 确保VPN全局代理生效

开启VPN工具的「全局代理」或「强制所有流量走代理」模式,避免仅代理浏览器而忽略Node.js进程的网络请求。

5. 排查本地拦截软件

关闭本地防火墙、杀毒软件,或将Node.js进程加入白名单,防止它们拦截Google认证请求。

内容的提问来源于stack exchange,提问作者Abdullah Rehmani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:19:41