我正在撰写一个仅需要Twitter用户个人资料照片的网络应用。我通过解析users / show XML未经身份验证的API调用(http://apiwiki.twitter.com/Twitter-REST-API-Method:-users%C2%A0show)来检索这些:
$twitterXML = simplexml_load_file("http://twitter.com/users/show/".$twitterUsername.".xml");
在我的测试中,我一直在达到Twitter API速率限制。当我以上述方式检索用户照片URL时,是对我服务器的IP地址施加的Twitter API速率限制,以便使用我的网络应用程序的任何人都可以达到150 /小时限制?或者是对访问我的网页的用户的IP地址施加了限制?
有没有办法在不受速率限制影响的情况下检索用户的个人资料照片?
答案 0 :(得分:8)
有许多方法可以避免速率限制。
你可以使用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
答案 1 :(得分:1)
这是您的服务器获取XML文件,因此它是受到限制的服务器IP地址。一种解决方案是使用某种形式的缓存,以减少服务器发送的请求数量。
答案 2 :(得分:1)
我会尝试将用户的照片缓存一段时间,或者将照片保留在最后,这样您每次都不会拨打Twitter。
这是一篇关于使用PHP进行缓存的文章:http://www.developertutorials.com/tutorials/php/php-caching/page1.html
答案 3 :(得分:0)
我对Twitter的API并不是很熟悉。我的第一个问题是您的用户是否在请求类似的个人资料如果用户对照片的请求之间存在任何相似性,您可以考虑在向Twitter发出请求之前缓存个人资料照片并检查缓存。
答案 4 :(得分:0)
尝试让Twitter取消您应用的费率限制。如果您解释为什么需要它,也许他们可以帮助您。