2

我正在尝试通过 auth 提取 facebook 头像。这就是我正在做的事情:

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()

4

2 回答 2

1

在解析之前尝试转义 URI:

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

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

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

于 2012-08-23T15:08:26.777 回答
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
    

假设您使用的是 ruby​​ < 1.9.3,您还必须

require 'net/https'

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

编辑

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

open(params[:image]) # http://graph.facebook.com/#{@user.facebook_id}/picture
于 2012-08-23T15:13:11.987 回答