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

使用JavaScript获取YouTube频道视频字幕遇401错误求助

解决YouTube API获取字幕时的401权限错误

核心问题排查与修复

1. 字幕请求URL格式错误

你请求单个字幕内容的URL里,参数分隔符用错了:
原代码里的https://www.googleapis.com/youtube/v3/captions/${captionId}&key=${...},其中&应该改成?。因为captionId是资源路径的最后一部分,后面的查询参数必须以?开头,否则服务器会把&key=xxx识别为路径的一部分,导致接口解析失败,触发401错误。

2. 认证方式冲突

代码里同时用了API Key和Bearer Token,这两种认证方式二选一即可:

  • 用API Key的情况:直接去掉Authorization请求头,确保你的API Key已经在Google Cloud控制台启用了YouTube Data API v3,并且没有设置错误的访问限制(比如前端使用时,HTTP Referrer限制要匹配你的域名;后端使用时,IP限制要包含你的服务器IP)。
  • 用OAuth Access Token的情况:去掉URL里的key参数,同时确保Token拥有captions.read权限,且未过期。私有视频的字幕必须用OAuth认证,API Key无法访问。

3. 权限与API启用验证

就算你说开通了全部权限,也要确认两点:

  • 确认YouTube Data API v3服务已经在Google Cloud控制台中启用(不是只配置权限,要单独启用这个API)。
  • 如果目标视频是私有视频,API Key无法获取其字幕,必须使用OAuth认证,且认证用户拥有该视频的访问权限。

修正后的代码示例(API Key版本)

async function getVideoTranscripts(videoId) {
  try {
    const response = await axios.get(
      `https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId=${videoId}&key=${process.env.YOUTUBE_API_KEY}`
    );

    const captionIds = response.data.items.map((item) => item.id);

    const transcriptPromises = captionIds.map(async (captionId) => {
      try {
        // 修正URL参数分隔符,移除多余的Authorization头,指定响应类型为文本
        const transcriptResponse = await axios.get(
          `https://www.googleapis.com/youtube/v3/captions/${captionId}?key=${process.env.YOUTUBE_API_KEY}`,
          { responseType: 'text' }
        );
        return transcriptResponse.data;
      } catch (error) {
        console.error(`Error fetching transcript for caption ${captionId}:`, error);
        return null;
      }
    });

    const transcripts = await Promise.all(transcriptPromises);
    return transcripts.filter(transcript => transcript !== null);
  } catch (error) {
    console.error(`Error fetching transcripts for video ${videoId}:`, error);
    return [];
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:55:06