0

我想在每天运行一次的 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.parse() 的东西,然后在 uri 上使用 open() ,但这似乎不起作用。尝试时我得到一个 404。

4

1 回答 1

0

我相信这个问题取决于所使用的 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之类的方法来拨打电话。

于 2012-07-25T21:08:39.920 回答