使用Restful Ruby获取Instagram访问令牌

时间:2019-01-24 17:26:00

标签: ruby rest instagram-graph-api

我正在尝试使用Instagram API创建Rails后台工作者以查询主题标签。我不需要登录任何其他用户,但是我自己,我也不想使用任何浏览器,而无需使用RESTful调用。

我正在尝试使用gem“ rest-client”(https://github.com/rest-client/rest-client)自动在Ruby脚本中获取访问令牌

我可以在浏览器中成功导航到以下网址,并从响应网址获取访问令牌

我同时使用了以下URL: https://www.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=xxx&response_type=token

但是,当我使用RESTful gem response = RestClient.get(url)时, response.headers['location']为零

我也尝试使用Instagram API URL,但没有运气:https://api.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=xxx&response_type=code

有人知道如何在Ruby中以编程方式完全获取访问令牌吗?

我认为我缺少登录用户的步骤(将是我)。不确定如何以编程方式执行此操作。

我可以将instagram API与永远不变的代码或访问令牌一起使用吗?

1 个答案:

答案 0 :(得分:0)

rest-client自动请求获取重定向主机。

https://github.com/rest-client/rest-client/blob/master/lib/restclient/abstract_response.rb

我还没有使用过instagram API,但是下面显示了获取“ Location”在302上的代码。

# client
require 'net/http'
require 'uri'
url = URI.parse('http://localhost:2000')
res = Net::HTTP.start(url.host, url.port) do |http|
  http.get('/')
end
puts "#{res.header['Location']} is https://google.com"
# test server
require 'socket'
server = TCPServer.new 2000
loop do
  socket = server.accept
  while header = socket.gets
    break if header.chomp.empty?
    puts header.chomp
  end
  socket.puts "HTTP/1.0 302"
  socket.puts "Location: https://google.com"
  socket.close
end

我希望这些信息对您有所帮助。