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

Node.js对接YouTube API v3快速入门示例认证错误问题咨询

错误原因

你遇到的invalid_grant报错核心是谷歌官方旧教程严重过时,核心问题有两个:

  1. 谷歌在2022年正式废弃了OOB(Out-of-Band)授权模式,也就是教程代码里用到的urn:ietf:wg:oauth:2.0:oob重定向URI,现在这种模式下拿到的授权码默认无效
  2. 未发布的测试状态OAuth应用,只有在「OAuth同意屏幕」中被添加为测试用户的账号才能完成授权,你之前添加测试用户的操作只解决了授权页面访问权限的问题,没有解决OOB废弃的核心问题。

解决方案

第一步:调整谷歌云控制台配置

  • 打开谷歌云控制台的「API和服务-凭据」页面,找到你创建的桌面应用OAuth客户端ID
  • 进入「OAuth同意屏幕」页面,确认你用来授权的邮箱已经被添加到测试用户列表中
  • 回到OAuth客户端ID的编辑页面,在「已获授权的重定向URI」中添加http://127.0.0.1:3000/oauth2callback,保存配置后重新下载client_secret.json文件替换项目中的旧文件
  • 删除本地已缓存的旧凭证文件:路径为~/.credentials/youtube-nodejs-quickstart.json(Windows系统对应C:\Users\你的用户名\.credentials\youtube-nodejs-quickstart.json)

第二步:修改授权逻辑代码

先执行npm install open安装自动打开浏览器的依赖,再把原来getNewToken函数的逻辑替换为本地端口监听回调获取授权码的逻辑,适配新的重定向规则:

const http = require('http');
const url = require('url');
const opn = require('open');

function getNewToken(oauth2Client, callback) {
  const authUrl = oauth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: SCOPES,
    prompt: 'consent' // 强制显示同意页面,确保返回刷新令牌
  });
  console.log('即将打开浏览器进行授权,如果没有自动打开,请手动访问以下地址: ', authUrl);
  
  // 启动临时本地服务监听授权回调
  const server = http.createServer(async (req, res) => {
    try {
      if (req.url.indexOf('/oauth2callback') > -1) {
        const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
        const code = qs.get('code');
        res.end('授权成功,可以关闭当前页面回到控制台查看结果');
        server.close();
        
        oauth2Client.getToken(code, function(err, token) {
          if (err) {
            console.log('获取访问令牌出错: ', err);
            return;
          }
          oauth2Client.credentials = token;
          storeToken(token);
          callback(oauth2Client);
        });
      }
    } catch (e) {
      console.log('处理授权回调出错: ', e);
    }
  }).listen(3000, () => {
    opn(authUrl);
  });
}

同时修改authorize函数中的重定向地址赋值,确保和你在谷歌云控制台配置的重定向地址一致:

// 把原来从credentials里读取redirectUrl的逻辑替换为
var redirectUrl = 'http://localhost:3000/oauth2callback';

第三步:验证运行

重新执行node quickstart.js,会自动打开浏览器进行授权,授权完成后自动获取令牌,不需要手动复制授权码。

常见排查点

  • 授权码有效期只有5分钟,不要长时间停留在授权页面
  • 不要重复使用同一个授权码,每次授权失败都要重新运行程序生成新的授权链接
  • 确认你的谷歌云项目已经启用了YouTube Data API v3服务,没有启用会额外触发权限报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:48:03