如何从网址下载数据而不会重定向到网址?
我已设法使用以下代码从Instagram API获取验证:
这会将我重定向到带有Json数据的instagram api,但我不确定如何使用/下载信息。
我确信这不是最好的方法,但我尝试过很多东西,这是我能让它发挥作用的唯一方法。
<a href=<%="https://api.instagram.com/oauth/authorize/?client_id=#{ENV['CLIENT_ID']}&redirect_uri=http://localhost:3000/edit&response_type=code"%>>Link my instagram account</a>
<% if params[:code] %>
<form id="target" method="post" action="https://api.instagram.com/oauth/access_token">
<div>
<input type="text" name="client_id" value=<%= ENV['CLIENT_ID']%> hidden="true">
<input type="text" name="client_secret" value=<%= ENV['CLIENT_SECRET']%> hidden="true">
<input type="text" name="grant_type" value="authorization_code" hidden="true">
<input type="text" name="redirect_uri" value="http://localhost:3000/edit" hidden="true">
<input type="text" name="code" value=<%= params[:code]%> hidden="true" >
</div>
</form>
<% end %>
答案 0 :(得分:1)
我确实使用了以下代码:
首先,您需要此请求才能获得第一个代码:
https://api.instagram.com/oauth/authorize/?client_id=#{ENV['CLIENT_ID']}&redirect_uri=http://localhost:3000&response_type=code
然后使用以下发布请求中的代码获取访问令牌和数据:
result = HTTParty.post("https://api.instagram.com/oauth/access_token",
{
:body => { "client_id" => ENV['CLIENT_ID'], "client_secret" => ENV['CLIENT_SECRET'],
"grant_type" => "authorization_code",
"redirect_uri" => 'http://localhost:3000', "code" => session[:code] },
:headers => { 'Content-Type' => 'application/x-www-form-urlencoded', 'Accept' => 'application/json'}
})
要查找用户ID,只需添加以下内容:
result.parsed_response["user"]["id"]
希望这会对某人有所帮助。我花了一些时间来理解这些请求是如何起作用的。