我正在使用 twitter gem 与 twitter API 进行交互。我正在使用single user authentication
(不是仅应用程序身份验证),如此处所示https://github.com/sferik/twitter/blob/master/examples/Configuration.md#single-user-authentication
我有一个页面,用户单击以使用 twitter 登录(我正在使用http://sign-in-with-twitter.herokuapp.com/)
一旦用户通过身份验证,我就会得到token
然后secret
使用我的应用程序consumer_key
,并与consumer_secret
登录用户一起使用token
并secret
进行初始化Twitter::REST::Client
,如下所示
module Ktwitter
class Manager
attr_accessor :client
def initialize token, token_secret
@client = Twitter::REST::Client.new do |config|
config.consumer_key = XXXXXXXXXXXXX
config.consumer_secret = ZZZZZZZZZZZZZ
config.access_token = token
config.access_token_secret = token_secret
end
end
def user
@client.user
end
end
end
obj = Ktwitter::Manager.new request.env['omniauth.auth']['credentials']['token'], request.env['omniauth.auth']['credentials']['secret']
我有一个(撬)断点,在那里我运行了obj.client.user
15 次(在不到 1 分钟的时间内 - 继续点击),然后我收到 rate_limit 警告
[1] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[2] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[3] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[4] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[5] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[6] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[7] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[8] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[9] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[10] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[11] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[12] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[13] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[14] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[15] pry(#<T>)> obj.client.user
=> #<Twitter::User id=177777>
[16] pry(#<T>)> obj.client.user
Twitter::Error::TooManyRequests: Rate limit exceeded
from /Users/xyz/.rvm/gems/ruby-2.1.1/gems/twitter-5.8.0/lib/twitter/rest/response/raise_error.rb:17:in `on_complete'
我假设 twitter gemclient.user
调用/1.1/users/show.json
https://github.com/sferik/twitter/blob/master/lib/twitter/rest/users.rb#L257?
这意味着 twitter api 在 15 分钟窗口内获得 15 次调用的限制率限制?但根据 API 文档https://dev.twitter.com/docs/api/1.1/get/users/show它是 180,而不是 15。那么为什么在 15 次调用后我会受到限制?
当我使用 Twitter API 控制台https://dev.twitter.com/console并在那里调用时/1.1/get/users/show
,它显示 180 作为速率限制。因此,我不确定为什么twitter gem
仅在 15 次通话后最终会受到限制。
无论如何,我可以在twitter
gem 中获取整个响应标头,以便调试易于阅读x-rate-limit-limit
和x-rate-limit-remaining
任何帮助将不胜感激。