使用仅使用api密钥的youtube数据api v3时出现403错误

时间:2014-04-09 13:10:49

标签: python youtube youtube-api

我正在聊天中从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密钥时这应该不是问题吗?

1 个答案:

答案 0 :(得分:1)

当你使用urllib2时,你需要确保你已经对所有参数进行了urlencoded编码...如果你的密钥中有一个字符因为它不是urlencoded而导致403。