如何将CURL命令转换为OAuth令牌的Rails POST请求?

时间:2014-09-01 03:01:01

标签: ruby-on-rails curl oauth-2.0 instagram

我是一名网络开发学生,正在尝试使用Instagram API。我以前从未接触过OAuth。

到目前为止,我可以从用户那里获取代码,授权我使用他们的Instagram凭据,但POST请求获取实际的令牌。我正在尝试使用Typhoeus来获取服务器端API请求,但我挂断的是将curl命令转换为可用的rails控制器脚本。

Instagram API建议使用以下curl命令:

curl \-F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR-REDIRECT-URI' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token

这是我尝试Typhoeus POST请求:

request = Typhoeus::Request.new(
  "https://api.instagram.com/oauth/access_token",
  method: :post,
  :body => {:client_id => CLIENT_ID,
              :client_secret => CLIENT_SECRET, 
              :grant_type => "authorization_code", 
              :redirect_uri => CALLBACK_URL, 
              :code => code}
  )
@results = JSON.parse((request.run).body)

当我尝试记录@results时出现以下错误:

{"code"=>400, "error_type"=>"OAuthException", "error_message"=>"You must provide a client_id"}

我拥有API所需的所有信息,我只是不知道如何正确安排...是的,所有常量都已定义。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:0)

我建议使用instagram-ruby-gem向Instagram API发出请求。你会发现它比使用Typhoeus容易得多。

答案 1 :(得分:0)

不知怎的,我解决了自己的问题。上面的Typhoeus脚本运行得很好,每个人都有很多JSON爱。

当@results一直没有回来时,我想我的rails服务器可能会遇到模糊的会话问题。

我希望我有一个更具体的答案,说明为什么它不能提前工作,但是当我向前迈进并希望得到一个更令人满意的结论时,我会保持自己的立场。

答案 2 :(得分:0)

我在Powershell中遇到了同样的问题 最后,我还将client_id和代码放入查询字符串中。然后它起作用。我的意思是这样的:

https://api.instagram.com/oauth/access_token?client_id=CLIENT_ID&code=code