我可以在rails rake任务中获得Instagram access_token吗?
问题描述:
我想在每天运行一次的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。
答
我认为这个问题取决于使用的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拨打电话。
如果我在轨运行例如康寿我得到的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
实际上,URI()应该是URI.parse()我认为如果我这样做,我会在控制台“连接重置对等” – mattwallace 2012-07-26 20:55:17