我正在使用youtube api从youtube帐户获取内容(使用 只是用户提供...没有用户身份验证)在我们的网站上。 从昨天早上起,我们一直在努力:
<error>
<domain>yt:quota</domain>
<code>too_many_recent_calls</code>
</error>
它始于随机发生,但很快,我们就会100%得到此错误。 我尝试了以下quota limits instructions,但我仍然收到错误:
如果您收到配额错误, 您可以采取以下几个步骤:
- 请求包括您的开发人员密钥和clientID。 我这样做
- 确保您的代码执行的操作是由用户启动的。 我知道 此
- 在限制查询参数中传递用户的IP地址。 我能 仅传递代理/服务器IP 地址,而不是确切的客户 因为Google AppEngine没有 支持 InetAddress.getLocalHost()。getHostAddress())
- 如果您要请求经过身份验证的Feed,请以用户身份登录,而不是以用户身份登录 网站范围的帐户。 我没有使用 认证
答案 0 :(得分:6)
我在使用Youtube API + App-Engine时遇到了同样的问题。我将开发人员密钥作为请求的参数传递,以及其他建议的参数(请求URL中的user-ip,developer-key)仍然无法与App Engine一起使用。
似乎开发人员密钥没有通过(虽然POST请求标头中存在X-Gdata-key)。我找到了这个解决方案:
每个YouTubeService实例都具有 developer_key 和 client_id 属性。在创建服务实例时设置此属性(而不是在标题中设置'X-GData-Key'或查询实例的键属性)会使 developer_key 成为应用ID: client_id 将在每个请求中发送,并成功接受。
您可以在constructor of YouTubeService for the Java API。
中设置这些值如果您使用的是Python API,则可以直接设置参数如下:
client = gdata.youtube.service.YouTubeService()
client.client_id = <application_id>
client.developer_key = <developer_key>
我注意到我的developer_key没有通过检查YouTube API信息中心的统计信息来完成。
答案 1 :(得分:2)
在使用python重新构建youtube api的轮子时,我发现可能导致X-GData-Key
无法识别的原因。这回答了@Javierfdr。
简短回答:urllib2
正在进行.capitalize()
和.title()
并将标题搞乱。
urllib2
模块中有大量这些代码。有些是处理程序,有些是Request
。 X-GData-Key
转换为X-Gdata-Key
(标题为,请注意较低的 d )或X-gdata-key
(当大写时} EM>)。我不得不构建一个自定义HTTPSHandler和一个Request对象来注释掉这些行。
我不确定他们为什么会这样做,但是一个长篇大论在http://bugs.python.org/issue2275中讨论了这个问题。我猜它没有成为python 2.7。
我尝试了requests library,但它没有用标题搞砸了。万岁:)
只是为了让别人不浪费时间,或者至少知道发生了什么。
- 编辑 -
实际上,我发现RFC个状态标题字段名称不区分大小写,我找不到谷歌没有的任何证据。我对下面的陈述错了,我仍然没有得到任何统计数据:(抱歉误导。
更改完所有内容后,我终于看到了YouTube API中的统计信息 仪表板 - 总是想知道为什么到现在为止没有数据。