Ruby on rails Rails控制器中针对instagram身份验证的Post请求

Ruby on rails Rails控制器中针对instagram身份验证的Post请求,ruby-on-rails,ruby,instagram,Ruby On Rails,Ruby,Instagram,因此,我尝试允许我的应用程序的用户使用Instagram登录,然后使用他们的access_令牌执行对Instagram API的请求 我看了一眼omniauth instagram rails gem,但它似乎不适用于访问令牌,而且我似乎无法发送重定向uri 所以,现在我尝试自己进行授权,以omniauth gems为例。到目前为止,我的html中有一个Instagram API的链接: 然后重定向uri将转到此方法: def request_token @code = params[:

因此,我尝试允许我的应用程序的用户使用Instagram登录,然后使用他们的access_令牌执行对Instagram API的请求

我看了一眼omniauth instagram rails gem,但它似乎不适用于访问令牌,而且我似乎无法发送重定向uri

所以,现在我尝试自己进行授权,以omniauth gems为例。到目前为止,我的html中有一个Instagram API的链接:

然后重定向uri将转到此方法:

def request_token
    @code = params[:code]
    uri = URI.parse('https://api.instagram.com/oauth/access_token')
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri)
    request.set_form_data({
      "client_id" => ENV["INSTAGRAM_KEY"],
      "client_secret" => ENV["INSTAGRAM_SECRET"],
      "grant_type" => "authorization_code",
      "redirect_uri" => "http://localhost:3000/auth/instagram/access",
      "code" => @code
      })      
  end

我需要net/https。仍然发生的唯一事情是显示与request_令牌关联的视图。http请求似乎没有发生任何事情。我对使用net/http非常陌生。我错过的东西可能很明显,但我就是看不到。非常感谢您的帮助

您已经设置了请求,但现在需要执行它。您可以使用
Net::HTTP.start
来实现这一点。下面是一个例子:

许多人发现<代码> NET:HTTP不必要的巴洛克,所以你也可以考虑一些类似于或有特写API的HTTP GEM。继续使用

Net::HTTP
,您可能会发现这很方便

uri = URI('http://www.example.com/todo.cgi')
req = Net::HTTP::Post.new(uri)
req.set_form_data('from' => '2005-01-01', 'to' => '2005-03-31')

res = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(req)
end

case res
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
else
  res.value
end