Ruby 我可以在rails rake任务中获取Instagram access_令牌吗?

Ruby 我可以在rails rake任务中获取Instagram access_令牌吗?,ruby,ruby-on-rails-3,instagram,Ruby,Ruby On Rails 3,Instagram,我想在每天运行一次的rake任务中使用Instagram gem来获取特定哈希标记的最新帖子 在查看Instagram API的文档时,您需要一个access_令牌来做任何有意义的事情 文档中给出了一个使用“curl”获取access_令牌的示例,我想知道如何将该示例转换为ruby,以便如果我的rails应用程序还没有toke,我可以通过这种方式获取toke 下面是Instagram API下一页给出的curl示例 curl \-F 'client_id=CLIENT-ID' \

我想在每天运行一次的rake任务中使用Instagram gem来获取特定哈希标记的最新帖子

在查看Instagram API的文档时,您需要一个access_令牌来做任何有意义的事情

文档中给出了一个使用“curl”获取access_令牌的示例,我想知道如何将该示例转换为ruby,以便如果我的rails应用程序还没有toke,我可以通过这种方式获取toke

下面是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

If successful, this call will return a neatly packaged OAuth Token that you can use to make authenticated calls to the API. We also include the user who just authenticated for your convenience:

{
    "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
    "user": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg"
    }
}

我在想我可以使用类似URI.parse()的东西,然后在URI上使用open(),但这似乎不起作用。我在尝试时得到了404。

我相信这个问题取决于所使用的HTTP动词。我相信open将使用GET发出请求,而curl示例将发布这些值

我没有Instagram的API凭据,所以我无法对此进行测试,但我相信如果您尝试使用,特别是post_form方法,您可能会更幸运

大致如下:

require 'net/http'
require 'uri'

form_data = {
  'client_id' => 'CLIENT-ID',
  'client_secret' => 'CLIENT-SECRET',
  'grant_type' => 'authorization_code',
  'redirect_uri' => 'YOUR-REDIRECT-URI',
  'code' => 'CODE'
}

uri = URI('https://api.instagram.com/oauth/access_token')
res = Net::HTTP.post_form(uri, form_data)

puts res

或者,您也可以尝试调用类似的操作。

如果我在rails控制台中运行您的示例,我会从/Users/mwallace/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/protocol.rb:135:'read\u nonblock'中得到一个EOFError:end-of-file-reacted-from/Users/mwallace/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9我认为,如果我这样做,我会在控制台中得到以下错误“由对等方重置连接”