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

Node.js调用Google Drive API报Missing required parameter: refresh_token如何解决

报错排查与解决方案

该错误本质是Google OAuth2授权凭证中缺少refresh_token参数:Google API返回的access_token默认有效期仅1小时,过期后必须用refresh_token换取新的有效凭证,缺少该参数就会触发invalid_request报错。

排查步骤

  • 先检查本地存储的授权凭证文件(官方教程默认生成token.json),打开确认是否存在refresh_token字段,90%的场景是该文件内确实无此字段。
  • 确认你在Google Cloud后台创建OAuth同意屏幕时的发布状态,如果是测试模式,不仅授权凭证有效期只有7天,多次授权也可能出现无法下发refresh_token的问题。
  • 检查初始化OAuth2客户端、生成授权链接的代码,是否添加了access_type: 'offline'参数:这是Google返回refresh_token的必要前置条件,如果你修改过官方默认的初始化代码,很可能误删了该参数。
  • 检查是否添加了prompt: 'consent'参数:如果你的账号之前已经完成过一次授权,Google默认不会重复返回refresh_token,只有加该参数强制重新触发授权同意流程,才会重新下发refresh_token。

解决步骤

  1. 先删除本地已经生成的token.json文件,清空历史无效授权凭证。
  2. 修改生成授权URL的代码,确保包含以下两个必要参数:
const authUrl = oauth2Client.generateAuthUrl({
  access_type: 'offline', // 必填,用于获取refresh_token
  prompt: 'consent', // 必填,强制弹出授权页,确保返回refresh_token
  scope: SCOPES // 保留你原本的权限范围配置即可
});
  1. 重新运行Node.js程序,打开终端输出的授权链接,用目标Google账号重新走授权流程,将拿到的授权码回填到终端。
  2. 新的token.json生成后打开校验,确认已经存在refresh_token字段,再运行listFiles函数即可正常调用。

注意:如果你的应用需要长期使用,需要把Google Cloud后台OAuth同意屏幕的发布状态从「测试」改为「正式」,否则测试模式下的refresh_token7天就会过期,需要重复授权。

内容的提问来源于stack exchange,提问作者Oussama Abouzid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:51:02