Ruby on rails 未定义的方法“OAuth';向Twitter api发出HTTP请求时

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代码的头字符串 相反,您需要自己创建字符

尝试向Twitter流媒体api发出请求时,我遇到以下OAuth错误:

“#NoMethodError:TwitterMoment:0x007fa081d821f0的未定义方法`OAuth'”

OAuth包含在我的文件中


任何想法都将不胜感激!这是我的第一个堆栈溢出问题:)

您在这里将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