Ruby on rails 未定义的方法“OAuth';向Twitter api发出HTTP请求时
尝试向Twitter流媒体api发出请求时,我遇到以下OAuth错误: “#NoMethodError:TwitterMoment:0x007fa081d821f0的未定义方法`OAuth'” OAuth包含在我的文件中Ruby on rails 未定义的方法“OAuth';向Twitter api发出HTTP请求时,ruby-on-rails,twitter,oauth,httparty,Ruby On Rails,Twitter,Oauth,Httparty,尝试向Twitter流媒体api发出请求时,我遇到以下OAuth错误: “#NoMethodError:TwitterMoment:0x007fa081d821f0的未定义方法`OAuth'” OAuth包含在我的文件中 任何想法都将不胜感激!这是我的第一个堆栈溢出问题:)您在这里将OAuth作为函数/方法使用,但该方法不存在。在OAuthgem中的任何地方都没有def OAuth(…),因此它会爆炸并给您命名错误 从下面的例子判断,我认为您混淆了Ruby代码的头字符串 相反,您需要自己创建字符
任何想法都将不胜感激!这是我的第一个堆栈溢出问题:)您在这里将OAuth作为函数/方法使用,但该方法不存在。在
OAuth
gem中的任何地方都没有def OAuth(…)
,因此它会爆炸并给您命名错误
从下面的例子判断,我认为您混淆了Ruby代码的头字符串
相反,您需要自己创建字符串(安全地创建有点烦人),或者使用方法(API)来创建字符串
这是:
此示例可能适用于您(很抱歉,我无法在本地对其进行测试):
附录:
通常,我可能会指示您使用现有的Twitter客户端gem,例如,但在这种情况下,他们似乎还没有实现Moments API。阅读您的附录后,我意识到我已经拥有了所需的!我有这个Twitter.rb文件:$Twitter=Twitter::Streaming::Client.new do | config | config.consumer_key=ENV[“Twitter_consumer_key”]config.consumer_secret=ENV[“Twitter_consumer_secret”]config.access_token=ENV[“Twitter_access_token”][“TWITTER_ACCESS_TOKEN_SECRET”]现在结束查询此:
$TWITTER.filter(位置:@bounds)do | object |如果object.is_a?(TWITTER::Tweet)结束
,它似乎起作用了!唯一的问题是,我现在想知道流式API是否不是我想要的。我正在尝试捕获特定时间某个地理位置的所有推文。特别是带有图像的推文。最初我使用的是搜索API,就像这样…$twitter.search(“e-since:#{from_date}截止日期:{to#date},地理编码:{lat},{long},10公里,lang:“en”,计数:100,过滤:“图像”)…但它不会返回很多结果!即使没有图像过滤器,它也只会返回10或20条推文。我了解到搜索api并非详尽无遗。它只返回最新或流行推文的示例。流式api更适合于此。我对推特api的具体内容不太了解,抱歉;我还没有做过详细介绍2009年开始整合Twitter。D:@amesimmons没错,搜索基于相关性(内部Twitter API算法),而不是完整性:
def query
authorisation_header = OAuth oauth_consumer_key=ENV["oauth_consumer_key"], oauth_nonce=ENV["oauth_nonce"], oauth_signature=ENV["oauth_signature"], oauth_signature_method=ENV["oauth_signature_method"], oauth_timestamp=ENV["oauth_timestamp"], oauth_token=ENV["oauth_token"], oauth_version=ENV["oauth_version"]
response = HTTParty.get("https://stream.twitter.com/1.1/statuses/filter.json?locations=-#{@bounds}", headers: {"Authorization" => authorisation_header})
end
consumer = OAuth::Consumer.new(
options[:consumer_key],
options[:consumer_secret],
:site => "http://query.yahooapis.com"
)
access_token = OAuth::AccessToken.new(consumer)
response = access_token.request(
:get,
"/v1/yql?q=#{OAuth::Helper.escape(query)}&format=json"
)
rsp = JSON.parse(response.body)
pp rsp
def query
consumer = OAuth::Consumer.new(
ENV["oauth_consumer_key"],
ENV["oauth_consumer_token"],
site: "https://stream.twitter.com"
)
access_token = OAuth::AccessToken.new(consumer)
response = access_token.request(
:get,
"/1.1/statuses/filter.json?locations=-#{OAuth::Helper.escape(@bounds)}"
)
response = JSON.parse(response.body)
pp response # Just a bit of debug printing for the moment; remove this later.
response
end