我正试图通过身份验证来获取脸部头像。这就是我正在做的事情:
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()
答案 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)
使用静态字符串时会抛出相同的错误“https://graph.facebook.com/565515262/picture”
当你这样做时它会说什么
render :text => params[:image]
如果上述两个都没有回答您的问题,请尝试指定使用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&lt; 1.9.3,您还必须
require 'net/https'
如果您使用的是ruby 1.9.3,则无需执行任何操作。
修改强>
如果您使用的是最新版本,则可以执行以下操作:
open(params[:image]) # http://graph.facebook.com/#{@user.facebook_id}/picture