未公开函数gapi.client.youtube.commentThreads.insert调用报错400求助
解决YouTube Data API commentThreads.insert的400错误
我帮你排查出这个400错误的核心原因了——不是真的缺少channelId或videoId,而是请求体的格式不符合API要求!你用了带点的字符串作为对象键(比如'snippet.topLevelComment.snippet.textOriginal'),但gapi.client的方法不会自动解析这种嵌套路径,导致API根本识别不到你传入的关键参数,所以返回了channelOrVideoIdMissing的错误提示。
你的代码问题所在
你当前的请求体是扁平结构,用点分隔的键名,这和API要求的嵌套JSON结构不匹配:
{ 'snippet.channelId': 'UC_x5XG1OV2P6uZZ5FSM9Ttw', 'snippet.videoId':'NeF0zpT4gNE', 'snippet.topLevelComment.snippet.textOriginal':'Hello from API' }
修正后的正确代码
需要把请求体改成嵌套对象的形式,让API能正确识别各个层级的参数:
var c = new gapi.client.youtube.commentThreads.insert( { "part":"snippet" }, { "snippet": { "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "videoId": "NeF0zpT4gNE", "topLevelComment": { "snippet": { "textOriginal": "Hello from API" } } } } ); c.execute();
额外要注意的细节
- 确保你的请求已经完成了正确的OAuth授权,并且拥有
https://www.googleapis.com/auth/youtube.force-ssl权限(这是发布评论必须的权限) - 确认目标视频/频道没有开启评论限制,允许外部提交评论
- 检查
channelId是否是目标视频所属的频道ID,API要求评论视频时必须同时提供正确的channelId和videoId
内容的提问来源于stack exchange,提问作者bobby_z
相关产品推荐
相关产品推荐

