使用Google API NodeJS客户端上传YouTube视频如何设置为公开可见?
解决方法
- 检查OAuth授权范围
确保请求OAuth授权时使用的scope包含https://www.googleapis.com/auth/youtube.upload或更高权限的https://www.googleapis.com/auth/youtube,scope权限不足时,即使代码中指定了privacyStatus: "public",YouTube也会强制将视频设置为私有。 - 删除requestBody中的无效id参数
你当前代码中向requestBody传入了id: channelId是错误配置,videos.insert接口不需要提前传入视频id,YouTube会在上传完成后自动生成视频id,传入无效id会触发状态异常导致视频被强制设为私有。 - 补充必填的儿童内容声明参数
YouTube现行政策要求所有上传视频必须明确声明是否为面向儿童的内容,未声明该参数时视频会被默认限制为私有等待人工确认,需要在status节点下添加selfDeclaredMadeForKids参数,非儿童内容设为false,儿童内容设为true。 - 检查Google Cloud项目的OAuth应用状态
如果你的Google Cloud项目中YouTube Data API对应的OAuth同意屏幕处于测试状态,所有通过该接口上传的视频会自动设为仅测试用户可见,若要对外公开发布,需要完成OAuth应用的官方审核流程,将应用状态修改为正式上线。
修正后的代码示例
let res = await youtube.videos.insert({ part: "id,snippet,status", notifySubscribers: true, requestBody: { snippet: { title: title, description: description, }, status: { privacyStatus: "public", selfDeclaredMadeForKids: false // 可根据视频实际属性调整值 }, }, media: { body: fs.createReadStream(filePath), }, }); console.log(`Youtube Upload Response:`); console.log(res.data);
内容的提问来源于stack exchange,提问作者ololo
相关产品推荐
相关产品推荐

