使用仅API密钥时,YouTube数据API v3返回403错误

1 投票
1 回答
690 浏览
提问于 2025-04-18 02:01

我在聊天中解析来自vimeo、twitch、youtube等网站的链接。整体上都很顺利,除了我从抓取youtube的数据转到直接使用他们的API时出现了一些问题。因为这个应用很小,所以不需要复杂的客户端库和OAuth 2.0等,只是用Python和urllib2。

现在,如果我在浏览器中打开这个特定的链接,我能正常获取数据,但当我在服务器上尝试时,却收到403 Forbidden的错误。根据谷歌开发者控制台的反馈,我从服务器查询时只有2次成功,10次中有8次失败。

    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访问”下的“服务器密钥”生成的。这个密钥有IP白名单,而我的服务器IP已经在白名单中。

有没有人知道为什么会这样?我能想到的唯一原因是,urllib2发送的请求头告诉youtube这个请求是来自Python的,但有了API密钥,这应该不是问题吧?

1 个回答

1

在使用urllib2的时候,你需要确保把所有的参数都进行了网址编码。如果你的参数中有某个字符没有进行网址编码,可能会导致403错误。

撰写回答