【问题标题】:Getting 403 error when using youtube data api v3 with only api key仅使用 api 密钥使用 youtube data api v3 时出现 403 错误
【发布时间】:2014-04-09 13:10:49
【问题描述】:

我在聊天中解析来自 vimeo/twitch/youtube 等的网址。一切正常,除了当我从抓取 youtube 切换到实际使用他们的 api 时。现在这是一个非常小的应用程序,因此不需要庞大的客户端库和 oAuth 2 等。只需使用 python 和 urllib2。

现在,如果我在浏览器中打开这个特定的 url,我会返回数据,但是当我在服务器上执行此操作时,我会得到 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 密钥是从 Google Developers Console 中的“公共 API 访问”->“服务器密钥”生成的。哪个有IP白名单,服务器ip就在里面。

有人知道为什么会这样吗?我能想到的唯一原因是因为 urllib2 发送的标头告诉 youtube 请求来自 python,但是当您有 api 密钥时这应该不是问题吗?

【问题讨论】:

  • 我并不是说这是解决方案,但是在使用 urllib2 时,您需要确保您已经对所有参数进行了 urlencoded ... 如果您的密钥中有一个字符因为它不是't urlencoded 可能导致 403。
  • 哇,这解决了问题!非常感谢,您能否将其作为答案而不是评论,以便我接受? :)
  • 很高兴这是问题所在……我自己也被那个咬了!将评论移至答案,希望它也能对其他人有所帮助。

标签: python youtube youtube-api


【解决方案1】:

使用 urllib2 时,您需要确保已对所有参数进行 urlencoded ... 如果您的密钥中有一个字符由于未进行 urlencoded 可能导致 403 而被修改。

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2014-02-01
    • 2013-03-04
    • 1970-01-01
    • 2015-01-01
    • 2020-11-12
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    相关资源
    最近更新 更多