0

特定のハッシュタグの最新の投稿を取得するために1日1回実行されるrakeタスクでInstagramgemを使用したいと思います。

Instagram APIのドキュメントを見ると、意味のあることを行うにはaccess_tokenが必要です。

ドキュメントには、「curl」を使用してaccess_tokenを取得する例が示されていますが、その例をrubyに変換する方法を考えているので、railsアプリにまだトークンがない場合は、この方法で取得できます。

これは、InstagramAPIの次のページにある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が出ます。

4

1 に答える 1

0

問題は、使用されている HTTP 動詞にかかっていると思います。curl の例では値を POST しているのに対し、open は GET を使用してリクエストを行うと思います。

私は 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 に答える