使用curl/wget调用YouTube Data API报缺失有效API Key错误排查
问题原因与解决方法
这不是缺少请求头导致的错误,根本原因是shell命令中的&符号被解析成了后台作业分隔符,你的curl请求实际只发送了URL的前半部分(https://www.googleapis.com/youtube/v3/playlistItems?part=snippet),而playlistId和key参数被当成独立的后台命令执行,API Key根本没传入请求,才会返回"缺少有效API Key"的403错误。
终端输出的这些信息也能验证这一点:
[1] 1769895 [2] 1769896 ... [1]- Done curl https://www.googleapis.com/youtube/v3/playlistItems?part=snippet [2]+ Done playlistId=PLWCXX8tjkPYsRRdiiNdPlWFD0Pd0eQgsQ
这里的[1]和[2]是后台作业ID,说明shell把&后面的内容拆成了单独命令。
解决方法
把整个URL用单引号(推荐)或双引号包裹,让shell将URL作为整体解析,不会拆分&符号:
curl命令示例
curl 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLWCXX8tjkPYsRRdiiNdPlWFD0Pd0eQgsQ&key=**************'
wget命令示例
wget 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLWCXX8tjkPYsRRdiiNdPlWFD0Pd0eQgsQ&key=**************'
这样就能完整传递所有参数,和浏览器请求一样正常获取JSON数据,不需要添加浏览器的那些请求头。
内容的提问来源于stack exchange,提问作者icalvete
相关产品推荐
相关产品推荐

