【问题标题】:Can I get the Instagram access_token in a rails rake task?我可以在 rails rake 任务中获取 Instagram access_token 吗?
【发布时间】:2012-07-26 05:08:39
【问题描述】:

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

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

文档提供了一个使用“curl”获取 access_token 的示例,我想知道如何将该示例转换为 ruby​​,因此如果我的 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

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 上使用 URI.parse() 然后 open() 之类的东西,但这似乎不起作用。我在尝试时得到 404。

【问题讨论】:

    标签: ruby ruby-on-rails-3 instagram


    【解决方案1】:

    我认为问题在于所使用的 HTTP 动词。我相信 open 将使用 GET 发出请求,而 curl 示例正在发布值。

    我没有 Instagram 的 API 凭据,因此我无法对此进行测试,但我相信如果您尝试使用 Net::HTTPSession,尤其是 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
    

    或者,您可以尝试使用httparty 之类的方式拨打电话。

    【讨论】:

    • 如果我在 rails consol 中运行您的示例,我会收到 EOFError: end of file reached from /Users/mwallace/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9 .1/net/protocol.rb:135:in `read_nonblock'
    • 我认为实际上 URI() 应该是 URI.parse() 如果我这样做,我会在控制台“对等连接重置”中收到以下错误
    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多