Ruby HTTP Library通过Facebook App获得Connection Reset

以下curl命令按预期工作:
curl 'https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=myappid&client_secret=myclientsecret'

我想在我的Ruby程序中做同样的事情。 以下代码给出了一个错误:

 fb_access_token_url = URI.parse( 'https://graph.facebook.com/oauth/access_token' + '?grant_type=client_credentials' + '&client_id=' + FACEBOOK_APP_ID + '&client_secret=' + FACEBOOK_APP_SECRET) fb_access_token = Net::HTTP.get(fb_access_token_url) 

这段代码也是如此:

 fb_access_token_host = 'graph.facebook.com' fb_access_token_path_and_params = ( '/oauth/access_token' + '?grant_type=client_credentials' + '&client_id=' + FACEBOOK_APP_ID + '&client_secret=' + FACEBOOK_APP_SECRET) https_port = Net::HTTP.https_default_port() fb_access_token = Net::HTTP.get_response(fb_access_token_host, fb_access_token_path_and_params, https_port) 

错误如下:

 Errno::ECONNRESET: Connection reset by peer /usr/lib/ruby/1.8/net/protocol.rb:135:in `sysread' /usr/lib/ruby/1.8/net/protocol.rb:135:in `rbuf_fill' /usr/lib/ruby/1.8/timeout.rb:67:in `timeout' /usr/lib/ruby/1.8/timeout.rb:101:in `timeout' /usr/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline' /usr/lib/ruby/1.8/net/http.rb:2028:in `read_status_line' /usr/lib/ruby/1.8/net/http.rb:2017:in `read_new' /usr/lib/ruby/1.8/net/http.rb:1051:in `request' /usr/lib/ruby/1.8/net/http.rb:948:in `request_get' /usr/lib/ruby/1.8/net/http.rb:380:in `get_response' /usr/lib/ruby/1.8/net/http.rb:543:in `start' /usr/lib/ruby/1.8/net/http.rb:379:in `get_response' /usr/lib/ruby/1.8/net/http.rb:356:in `get' ./test-login-and-registration.rb:182:in `test_facebook_register' 

我在Ubuntu 12.04上使用Ruby 1.8.7

感谢Manoj Awasthi让我意识到有一些我无法使用的方法。

问题是我需要net / http而不是net / https。

工作片段:

 fb_access_token_url = URI.parse( 'https://graph.facebook.com/oauth/access_token' + '?grant_type=client_credentials' + '&client_id=' + FACEBOOK_APP_ID + '&client_secret=' + FACEBOOK_APP_SECRET) https = Net::HTTP.new(fb_access_token_url.host, fb_access_token_url.port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE fb_access_token = https.request_get(fb_access_token_url.path + '?' + fb_access_token_url.query)