2010-01-09 98 views
4

我正在使用YouTube的API從YouTube的帳戶(與 只是用戶飼料...沒有用戶身份驗證)在我們的網站上的內容。 由於昨天上午,我們不斷收到:yt:配額太多最近的電話 - YouTube的API幫助

<error> 
    <domain>yt:quota</domain> 
    <code>too_many_recent_calls</code> 
</error> 

它開始了作爲一個隨機事件,但很快,我們得到這個錯誤的時間100%。 我嘗試以下quota limits instructions,但我仍然得到錯誤:

If you are receiving quota errors, there are a couple steps you can take:

  • Have your requests include your developer key and clientID. I do this
  • Make sure the actions your code is performing is user-initiated. I do this
  • Pass the user's IP address in the restriction query parameter. I am able to pass only the proxy/server IP address, not the exact client's because Google AppEngine does not support InetAddress.getLocalHost().getHostAddress())
  • If you are requesting authenticated feeds, login as the user rather than a site-wide account. I am not using authentication
+0

更新:試過這個地方和一切工作完全無關的任何數量的YouTube的調用問題發生。 – Satish 2010-01-10 00:13:32

回答

6

我有與YouTube API +應用程序引擎同樣的問題。我將開發人員密鑰作爲請求的參數,以及其他建議參數(請求url中的user-ip,developer-key)傳遞給App Engine,但仍然無法使用。

好像開發人員密鑰沒有通過(儘管X-Gdata-key存在於POST請求頭文件中)。我發現這個解決方案:

每個YouTubeService實例具有屬性Developer_Key開發CLIENT_ID。設置在創建服務實例時,該屬性(而不是在頭部或查詢實例的關鍵屬性設置的「X-的GData密鑰」)使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儀表盤的統計打通。

+0

@Javiefdr:只是說它對我很有用*到目前爲止*,我下載了115K個條目,並且仍然在運行。之前,我在獲得一個' 403禁止的迴應。 – casperOne 2011-04-24 04:01:52

2

在用python重新構建youtube api的輪子時,我發現可能導致X-GData-Key無法識別的東西。這回答@Javierfdr。

簡短回答:urllib2正在做.capitalize().title()全部和搞砸頭。

urllib2模塊中有很多這些代碼。一些在處理程序和一些在RequestX-GData-Key被轉換成X-Gdata-Key標題,請注意下d),或X-gdata-key(當大寫)。我不得不建立一個自定義的HTTPSHandler和一個Request對象來註釋掉這些行。

我不確定他們爲什麼要這樣做,但是一個長長的線程在http://bugs.python.org/issue2275中討論了這個問題。我想它並沒有讓它成爲python 2.7。

我試用了requests library,它沒有弄亂它與標題。萬歲:)

只是爲了讓別人不會浪費他們的時間,或至少有線索發生了什麼事情。

- 編輯 -

其實,我發現了RFC狀態的頭字段名稱是區分大小寫的,我無法找到任何證據證明谷歌沒有。我看錯了以下聲明,我還沒有得到任何統計:(對不起誤導

After changing all of them, I finally saw the stats in YouTube API dashboard - always wondered why there was no data until now.