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

问题描述 投票:0回答:3

我是一名网络开发学生,我正在努力与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需要的所有信息,我只是不知道如何正确安排...是的,所有的常量都是定义的。任何帮助赞赏!

ruby-on-rails curl oauth-2.0 instagram
3个回答
0
投票

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


0
投票

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

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

我希望我有一个更具体的答案,为什么这不能提前工作,但我会继续前进,因为我向前迈进,希望有一个更令人满意的结论。


0
投票

我终于在powershell中遇到了同样的问题,我还将client_id和代码放在查询字符串中。然后它工作。我的意思是这样的:

“Qazxswpoi”

© www.soinside.com 2019 - 2024. All rights reserved.