2012-07-25 39 views
0

我想在每天運行一次的rake任務中使用Instagram gem以獲取特定哈希標記的最新帖子。我可以在rails rake任務中獲得Instagram access_token嗎?

在查看Instagram API的文檔時,您需要一個access_token來完成任何有意義的事情。

該文檔給出了一個使用「curl」來獲取access_token的示例,我在想如何將該示例轉換爲ruby,所以如果我的rails應用程序沒有toke,我已經可以用這種方法獲得一個。

這裏是捲曲例子給Instagram的API

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(),然後打開()以下頁面上,但是那並不是」似乎在做伎倆。嘗試時我會得到一個404。

回答

0

我認爲這個問題取決於使用的HTTP動詞。我相信open會使用GET來發出請求,而curl的例子則是POST值。

我沒有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撥打電話。

+0

如果我在軌運行例如康壽我得到的EOFError:文件結束從/Users/mwallace/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/達到 \t net/protocol.rb:135:在'read_nonblock' – mattwallace 2012-07-26 18:49:10

+0

實際上,URI()應該是URI.parse()我認爲如果我這樣做,我會在控制檯「連接重置對等」 – mattwallace 2012-07-26 20:55:17

相關問題