我正在聊天中从vimeo / twitch / youtube等解析网址。一切正常,除了当我从刮取youtube切换到实际使用他们的api时。现在这是一个非常小的应用程序,所以不需要庞大的客户端库和oAuth 2等。只需将python与urllib2一起使用。
现在,如果我在浏览器中打开此特定网址,我会收回数据,但当我在服务器上执行此操作时,我会收到403 Forbidden
。根据谷歌开发者控制台,它从我的服务器查询时已经工作了2/10次。
https://www.googleapis.com/youtube/v3/videos?id={id}&key={api_key}&part=snippet,contentDetails,statistics&fields=items(snippet/channelTitle,snippet/title,contentDetails/duration,statistics/viewCount)
这是我的应用创建的网址。当我在浏览器中打开它并在api键等中绘图时它工作正常,但是当我这样做时:
urllib2.urlopen(url)
我得到403 Forbidden
。
api密钥是从“公共API访问” - >生成的。 Google Developers Console中的“服务器密钥”。哪个有IP白名单,服务器IP就在那里。
任何人都知道为什么会这样吗?我能想到的唯一原因是因为urllib2发送的头告诉youtube请求来自python,但是当你有api密钥时这应该不是问题吗?
答案 0 :(得分:1)
当你使用urllib2时,你需要确保你已经对所有参数进行了urlencoded编码...如果你的密钥中有一个字符因为它不是urlencoded而导致403。