全部, 我一直在达到限速。我只想从我自己的时间线中提取最新状态。我正在使用以下代码来实现这一目标:
$url = "https://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&count={$how_many}";
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$contents = curl_exec( $curl );
curl_close( $curl );
if ( ! empty( $contents ) ) {
// Decode it.
$tweet = json_decode( $contents );
// Cache it for next time.
set_transient( $id.'-'.$username, $tweet, 60*60*12 ); // 3 hour cache
}
这样可以正常工作,但我一直达到每小时150个请求的速率限制。我已经读过,如果我对API进行身份验证,则会解除速率限制。任何人都可以解释如何做到这一点?
提前致谢!
答案 0 :(得分:1)
您是否需要每4分钟刷新一次状态?我猜不会,你实际上在代码中设置了3个小时的缓存,为什么不使用它呢?
if(get_transient($id.'-'.$username) === false) {
$url = "https://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&
count={$how_many}";
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$contents = curl_exec( $curl );
curl_close( $curl );
if ( ! empty( $contents ) ) {
// Decode it.
$tweet = json_decode( $contents );
// Cache it for next time.
set_transient( $id.'-'.$username, $tweet, 60*60*12 ); // 3 hour cache
}
}
显然,如果需要,可以减少缓存持续的时间。
答案 1 :(得分:0)
Twitter REST API的速率与您声明的完全相同 - 未经身份验证的请求(按IP地址)为150,对Oauth经过身份验证的请求为350。我过去所做的就是查看您的查询,并使用搜索API - 进行更高效的通话。或者,从不同的虚拟IP地址执行更多呼叫。
来自https://dev.twitter.com/docs/rate-limiting#rest 未经身份验证的呼叫每小时允许150个请求。未经身份验证的呼叫是根据发出请求的服务器或设备的面向公众的IP来衡量的。 OAuth调用每小时允许350个请求,并根据请求中使用的oauth_token进行测量。
除此之外,您无法列入白名单。这是一个link来支持它。
有关直接来自twitter的PHP示例,请尝试here并查看PHP twitter库。基本上你必须通过设置Twitter应用程序和接收Oauth Key&来建立Oauth连接。秘密。