Rails Facebook头像到数据uri

时间:2012-08-23 14:57:46

标签: ruby-on-rails ruby facebook ruby-on-rails-3

我正试图通过身份验证来获取脸部头像。这就是我正在做的事情:

def image_uri
  require 'net/http'
  image = URI.parse(params[:image]) # https://graph.facebook.com/565515262/picture
  fetch = Net::HTTP.get_response(image)
  based = 'data:image/jpg;base64,' << Base64.encode64(fetch)
  render :text => based
end

我收到以下错误(新错误 - 已编辑):

Connection reset by peer

我试过谷歌搜索,我似乎无法得到解决方案,任何想法?

我基本上在寻找PHP的file_get_contents()

的确切功能

2 个答案:

答案 0 :(得分:1)

在解析之前尝试转义URI:

URI.parse URI.escape(params[:image])

确保params[:image]确实包含您要解析的uri ...我会传递用户ID并将其插入到uri中。

URI.parse URI.escape("https://graph.facebook.com/#{params[:image]}/picture)"

答案 1 :(得分:0)

  1. 使用静态字符串时会抛出相同的错误“https://graph.facebook.com/565515262/picture”

  2. 当你这样做时它会说什么

    render :text => params[:image]
    
  3. 如果上述两个都没有回答您的问题,请尝试指定使用HTTPS -

    uri = URI('https://secure.example.com/some_path?query=string')
    Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https').start do |http|
        request = Net::HTTP::Get.new uri.request_uri
        response = http.request request # Net::HTTPResponse object
    end
    
  4. 假设你在ruby&lt; 1.9.3,您还必须

    require 'net/https'
    

    如果您使用的是ruby 1.9.3,则无需执行任何操作。

    修改

    如果您使用的是最新版本,则可以执行以下操作:

    open(params[:image]) # http://graph.facebook.com/#{@user.facebook_id}/picture