2010-01-07 65 views
2

我在寫一個只需要Twitter用戶個人資料照片的網絡應用程序。我通過分析用戶/顯示XML未經驗證的API調用(http://apiwiki.twitter.com/Twitter-REST-API-Method:-users%C2%A0show)檢索這些:我的網絡應用程序如何在不觸及API限制的情況下檢索Twitter用戶照片?

$twitterXML = simplexml_load_file("http://twitter.com/users/show/".$twitterUsername.".xml"); 

在我的測試,我一直打Twitter API的速率限制。當我以上述方式檢索用戶照片URL時,我的服務器的IP地址上施加了Twitter API速率限制,以便任何使用我的Web應用程序的人都可以達到150 /小時限制?或者是限制訪問我的網頁的用戶的IP地址?

是否有任何方式檢索用戶的個人資料照片,而不受速率限制的影響?

回答

1

這是您的服務器提取XML文件,所以它是被限制的服務器IP地址。一種解決方案是使用某種形式的緩存,這樣可以減少服務器發送的請求數量。

+0

是否有任何代碼,以便網頁訪問者是獲取XML的人? – GingerBreadMane 2010-01-07 22:56:41

+0

我不這麼認爲。由於「相同來源策略」,您無法使用JS獲取遠程內容。也許有一種方法可以使用Flash來完成,而不是將這些數據傳遞給服務器,但是在這種情況下,您正在構建的系統比服務器獲取遠程內容的系統脆弱得多。 – Marko 2010-01-08 00:33:34

0

我對Twitter的API並不是很熟悉。我的第一個問題是你的用戶是否在請求類似的配置文件如果用戶的照片請求之間有任何相似之處,您可能會考慮緩存個人資料照片並在向Twitter發送請求之前檢查緩存。

0

試着問Twitter上取消限制爲您的應用程序。如果你解釋爲什麼你需要它,也許他們可以幫助你。

7

有幾種方法可以避免速率限制。

你可以使用Twavatar,甚至不直接擊中Twitter。 http://twitteravatar.appspot.com/

您可以創建一個額外的Twitter帳戶,以便在調用API時使用它作爲機器人進行身份驗證,併爲您提供每小時額外的150次點擊。

您可以將您的IP列入白名單,在這種情況下,您將可以在一個小時內發出20,000個請求。 http://twitter.com/help/request_whitelisting

您可以讓用戶在訪問您的網站時通過twitter進行身份驗證,並將點擊次數限制在其上。使用Twitter登錄是實現此目標的好方法:http://apiwiki.twitter.com/Sign-in-with-Twitter

您可以在他們的網站上了解更多關於Twitter限速的信息。 http://apiwiki.twitter.com/Rate-limiting

+0

我不認爲我可以使用額外的Twitter帳戶,因爲用於獲取用戶信息(包括圖片網址)的API調用未經過身份驗證並計入IP速率限制;不是用戶速率限制。如果您知道獲取圖片網址的身份驗證方式,請告訴我。感謝提到twitteravatar.appspot.com。我可能會要求允許使用他們的網址,直到我可以將我的IP列入白名單。 – GingerBreadMane 2010-01-08 21:22:39

+0

你可以讓他們被認證。個人資料信息仍應返回。 – abraham 2010-01-09 00:57:41

+0

@GingerBreadMane如果您通過身份驗證,請求的確會降低用戶速率限制。文檔僅僅意味着這些調用不需要由經過驗證的用戶進行。 – 2011-04-20 09:49:15

相關問題