如何通过YouTube API高效验证大量视频ID归属授权用户?
解决YouTube视频ID归属OAuth授权用户的高效方案
嘿,我之前处理过类似的需求,给你几个实用的思路,应该能解决你的问题:
1. 批量查询视频详情,对比频道ID(最高效)
这是最直接的方案,不用遍历用户的所有视频:
- 首先,通过
channels.list接口,带上mine=true参数(需要OAuth授权),获取当前授权用户的频道ID(返回结果里的id字段)。 - 然后,把你的100+视频ID分成每50个一组(因为YouTube API的
videos.list接口一次最多支持50个ID查询),调用videos.list,参数设置为:part=snippetid=视频ID1,视频ID2,...
- 对每个返回的视频对象,提取
snippet.channelId字段,和你刚才拿到的授权用户频道ID做对比,匹配上的就是属于该用户的视频。
这个方法的优势是请求次数极少(100多个视频只需要2-3次请求),API配额消耗也很低,完全符合你的高效需求。
2. 获取频道所有视频,做ID交集(适合需要全量验证的场景)
如果你的需求是确认数组里的视频是否都在用户频道内,或者需要获取用户的全部视频ID,可以用这个方法解决分页限制:
- 第一步还是通过
channels.list获取用户的默认上传播放列表ID,在返回结果的contentDetails.relatedPlaylists.uploads字段里。 - 调用
playlistItems.list接口,参数设置为:part=contentDetailsplaylistId=刚才拿到的上传列表IDmaxResults=50(最大每页数量)
- 每次请求后,检查返回结果里的
nextPageToken,如果存在,就带上这个参数继续请求,直到nextPageToken为空,这样就能拉取到该频道的所有视频ID。 - 最后把拉取到的所有视频ID和你的数组做交集,就能得到匹配的视频。
注意:如果用户频道的视频非常多(比如上万条),这个方法的请求次数会比较多,但YouTube API的配额足够支撑这类操作,而且逻辑简单易懂。
额外提示
- API配额:
channels.list和videos.list每次请求消耗1个配额单位,playlistItems.list也是每次1个,100多个视频的场景下配额完全不用担心。 - 授权验证:确保你的OAuth授权请求包含了
https://www.googleapis.com/auth/youtube.readonly或者更高级的权限,这样才能正常调用上述接口。
内容的提问来源于stack exchange,提问作者Dylan Buth
相关产品推荐
相关产品推荐

