假设我有2个Twitter访问令牌,用于user1和user2。每个人都有180个电话来获取特定搜索的推文。
假设user1在15分钟的窗口中使用了所有180个呼叫,我的应用是否可以使用user2的访问令牌,以便user1可以进行额外的呼叫?这当然是假设user2当时没有使用他/她的访问权限。
答案 0 :(得分:7)
我在PHP-Zend中使用了亚伯拉罕的oAuth库(https://github.com/abraham/twitteroauth)。我还将用户的访问令牌存储在数据库中,并且我已经使用了以下函数来获得App Rate Limit。
public function getAppLimit($user_id)
{
$data = $this->getTwitterConnection($user_id);
$connection = new TwitterOAuth(self :: CONSUMER_KEY, self :: CONSUMER_SECRET, $data['oauth_token'], $data['oauth_token_secret']);
$rate_limit = $connection->get('application/rate_limit_status');
return $rate_limit;
}
现在您获得所有API速率限制。你想要搜索,它将提供以下数据
["search"] => object(stdClass)#170 (1) {
["/search/tweets"] => object(stdClass)#171 (3) {
["limit"] => int(180)
["remaining"] => int(180)
["reset"] => int(1366107386)
}
}
现在,例如,如果user1限制超过了您可以使用用户2或用户3访问令牌,但在此之前您可以检查用户2或用户3速率限制。现在您可以在上面的搜索结果中看到,您将获得['reset']值。这意味着它将在很长一段时间后重置。当user1限制超过时,您需要保存该重置参数,而不是在该段时间内使用user2和user3访问令牌。当15分钟结束时,您可以再次使用用户1访问令牌。并且如果user2和user3都在该时间窗口上使用该搜索API,您可以向用户1发出警告,告知您可以在一段时间后进行搜索。
希望有所帮助