Ruby on rails 无法获取身份验证令牌

Ruby on rails 无法获取身份验证令牌,ruby-on-rails,ruby,json,api,twitter,Ruby On Rails,Ruby,Json,Api,Twitter,我尝试将twitter api与ruby结合使用,以实现精确搜索。但是由于新的twitter api,我无法访问json文件 这是链接 你能告诉我如何获取json文件吗 我已经发布了我的rb文件,plz帮助 # http://ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI.html require 'open-uri' # https://github.com/flori/json require 'json' # http://

我尝试将twitter api与ruby结合使用,以实现精确搜索。但是由于新的twitter api,我无法访问json文件

这是链接

你能告诉我如何获取json文件吗

我已经发布了我的rb文件,plz帮助

# http://ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI.html 
require 'open-uri'
# https://github.com/flori/json
require 'json'
# http://stackoverflow.com/questions/9008847/what-is-difference-between-p-and-pp
require 'pp'
require 'twitter'
#load 'twitter_config.rb'
#Create seprate config file.
#Encrprty ur keys using md5.

client = Twitter::REST::Client.new do |config|
  config.consumer_key = "3OpBStixWSMAzBttp6UWON7QA"
  config.consumer_secret = "MBmfQXoHLY61hYHzGYU8n69sQRQPheXJDejP1SKE2LBdgaqRg4"
  config.access_token = "322718806-qScub4diRzggWUO9DaLKMVKwXZcgrqHD2OFbwQTr"
  config.access_token_secret = "aWAIxQVnqF3nracQ0cC0HbRbSDxlCAaUIICorEAPlxIub"
end 
# Construct the URL we'll be calling
print "please enter phrase you want to search"
phrase_value=gets.chomp;
#pets = File.open("https://api.twitter.com/1.1/search/tweets.json?q=#{phrase_value}", "r");

request_uri = "https://api.twitter.com/1.1/search/tweets.json?q=";
request_query = ''
url = "#{request_uri}#{phrase_value}"
url.gsub!(' ','%20')
print url;

# Actually fetch the contents of the remote URL as a String.
buffer = open(url).read

# Convert the String response into a plain old Ruby array. It is faster and saves you time compared to the standard Ruby libraries too.
result = JSON.parse(buffer)
# An example of how to take a random sample of elements from an array. Pass the number of elements you want into .sample() method. It's probably a better idea for the server to limit the results before sending, but you can use basic Ruby skills to trim & modify the data however you'd like.
result = result.sample(5)

# Loop through each of the elements in the 'result' Array & print some of their attributes.
 result.each do |tweet|
  puts "Count       Username                tweet"           
  puts "(#{tweet.url})    #{tweet.user.screen_name} #{tweet.text}";
  #sleep(3);
  #count=count+1;
  #before following user check if its alreay in list using bollean. 
  client.follow("#{tweet.user.screen_name}")
end
puts "Finished!\n\n"

既然您已经在使用Twitter gem,为什么不使用它的搜索方法,而不是滚动您自己的:

require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key = "3OpBStixWSMAzBttp6UWON7QA"
  config.consumer_secret = "MBmfQXoHLY61hYHzGYU8n69sQRQPheXJDejP1SKE2LBdgaqRg4"
  config.access_token = "322718806-qScub4diRzggWUO9DaLKMVKwXZcgrqHD2OFbwQTr"
  config.access_token_secret = "aWAIxQVnqF3nracQ0cC0HbRbSDxlCAaUIICorEAPlxIub"
end 

print "please enter phrase you want to search"
search_query = gets.chomp;

# @see https://github.com/sferik/twitter/blob/master/examples/Search.md
client.search(search_query, result_type: "recent").each do |tweet|
  puts "Count       Username                tweet"           
  puts "(#{tweet.url})    #{tweet.user.screen_name} #{tweet.text}";
end

如果这些是您真正的秘密令牌,您可能想更改它们,现在…您还应该使用url=request\u uri+uri::encodephrase\u值来实际转义搜索查询,而不是仅仅替换空格…@bradwerth不,不是,但感谢您的建议。@papirtiger我必须进行精确匹配,为此,我使用了双引号的twitter搜索api。但它没有返回正确的值。仍然返回关键字搜索。你能给我一些建议吗?没有用引号括起来的q参数。试穿吧,谢谢,先生,我也是这么做的。但我需要json文件并将其存储在何处,所以我使用了搜索api调用。谢谢你的帮助谢谢你的帮助先生,我也用过同样的方法。它真的帮助了我
require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key = "3OpBStixWSMAzBttp6UWON7QA"
  config.consumer_secret = "MBmfQXoHLY61hYHzGYU8n69sQRQPheXJDejP1SKE2LBdgaqRg4"
  config.access_token = "322718806-qScub4diRzggWUO9DaLKMVKwXZcgrqHD2OFbwQTr"
  config.access_token_secret = "aWAIxQVnqF3nracQ0cC0HbRbSDxlCAaUIICorEAPlxIub"
end 

print "please enter phrase you want to search"
search_query = gets.chomp;

# @see https://github.com/sferik/twitter/blob/master/examples/Search.md
client.search(search_query, result_type: "recent").each do |tweet|
  puts "Count       Username                tweet"           
  puts "(#{tweet.url})    #{tweet.user.screen_name} #{tweet.text}";
end