【问题标题】:How to translate a CURL command into a Rails POST request for an OAuth token?如何将 CURL 命令转换为 Rails POST 请求以获取 OAuth 令牌?
【发布时间】:2014-09-01 03:01:00
【问题描述】:

我是一名网络开发学生,正在尝试使用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


    【解决方案1】:

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

    【讨论】:

    • 我正在做的项目要求我们使用 Rails。所以我没有 Sinatra!不过谢谢,已经调查过了。
    • 你应该可以使用 Rails。 :) 见这篇文章:blog.ajmalafif.com/instagram-gem-with-rails
    • 不知何故,我实际上只是设法使它与上面的代码一起工作。我确定我没有改变任何东西,但@results 现在充满了 JSON。在我弄清楚我实际上做了什么来解决它之前,我将把这个问题保持开放。
    【解决方案2】:

    不知何故,我解决了自己的问题。上面的 Typhoeus 脚本运行良好,每个人都喜欢 JSON。

    我想当@results 一直返回为零时,我的rails 服务器可能一直存在模糊的会话问题。

    我希望我有一个更具体的答案来说明为什么这不能更早地工作,但我会在前进的过程中保持警惕,并希望有一个更令人满意的结论。

    【讨论】:

      【解决方案3】:

      我在 powershell 中遇到了同样的问题 最后,我也将 client_id 和 code 放入查询字符串中。然后它工作。我的意思是这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-12
        • 1970-01-01
        • 2014-09-17
        • 1970-01-01
        • 2021-08-03
        • 2021-05-18
        • 2016-05-20
        • 2016-08-04
        相关资源
        最近更新 更多