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

如何无需OAuth2通过YouTube API获取频道播放列表(JavaScript)

不用OAuth2获取YouTube频道公开播放列表的实现方案(JavaScript)

当然可以!你完全不需要OAuth2来获取YouTube频道的公开播放列表——这些数据本来就是面向公众开放的,用Google提供的**API密钥(API Key)**就能轻松实现。OAuth2只针对需要用户授权的操作(比如修改私人播放列表、访问私密内容),完全没必要在这里用上。

实现步骤

1. 准备你的API密钥

首先得去Google Cloud Console完成以下操作:

  • 创建一个新项目
  • 在项目中启用「YouTube Data API v3」
  • 生成一个API密钥,记得给密钥设置使用限制(比如绑定你的域名),避免被滥用

2. JavaScript代码实现

下面是完整的示例代码,分两步:先通过频道用户名获取频道ID(如果已经知道频道ID可以跳过这一步),再获取该频道的所有公开播放列表:

// 替换成你自己的API密钥
const API_KEY = '你的API密钥';
// 替换成目标频道的用户名(比如YouTube频道URL里@后面的部分)
const TARGET_CHANNEL_USERNAME = 'GoogleDevelopers';

// 第一步:通过用户名获取频道ID
fetch(`https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=${TARGET_CHANNEL_USERNAME}&key=${API_KEY}`)
  .then(res => res.json())
  .then(channelData => {
    if (!channelData.items || channelData.items.length === 0) {
      console.error('未找到对应频道,请检查用户名是否正确');
      return;
    }
    const channelId = channelData.items[0].id;
    // 第二步:获取频道的所有公开播放列表
    return fetch(`https://www.googleapis.com/youtube/v3/playlists?part=snippet,contentDetails&channelId=${channelId}&maxResults=50&key=${API_KEY}`);
  })
  .then(res => res.json())
  .then(playlistsData => {
    console.log('频道公开播放列表:', playlistsData.items);
    // 遍历处理每个播放列表的信息
    playlistsData.items.forEach(playlist => {
      console.log(`
        播放列表标题: ${playlist.snippet.title}
        播放列表ID: ${playlist.id}
        封面图: ${playlist.snippet.thumbnails.medium.url}
        视频数量: ${playlist.contentDetails.itemCount}
      `);
    });
  })
  .catch(err => console.error('请求出错:', err));

额外需求:获取频道的「上传视频」列表

如果想获取频道默认的「上传」列表(就是所有发布视频的集合),只需要修改第一步的请求,获取频道的contentDetails字段:

// 修改第一步的请求URL
fetch(`https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=${TARGET_CHANNEL_USERNAME}&key=${API_KEY}`)
  .then(res => res.json())
  .then(channelData => {
    const uploadsPlaylistId = channelData.items[0].contentDetails.relatedPlaylists.uploads;
    // 然后调用playlistItems.list接口获取该列表下的视频
    return fetch(`https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${uploadsPlaylistId}&maxResults=20&key=${API_KEY}`);
  })
  .then(res => res.json())
  .then(videosData => {
    console.log('频道上传的视频:', videosData.items);
  });

注意事项

  • API密钥不要随意公开在前端代码中,如果是前端部署,一定要在Google Cloud Console设置HTTP请求来源限制,只允许你的域名调用
  • YouTube Data API有调用配额限制,普通免费配额足够小流量使用,避免短时间内大量调用
  • 确保请求的part参数包含你需要的字段,比如snippet可以获取标题、缩略图,contentDetails可以获取视频数量等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:15:47