2013-03-20 41 views
2

我使用mongoid,轨道3.2.10和色器件omniauth ..并试图建立Facebook的个人资料图片URL的定制IMAGE_SIZE
自定义图像大小分为色器件+ Facebook的omniauth

config.omniauth :facebook , API_KEYS['facebook']['api_key'], API_KEYS['facebook']['api_secret'], :image_size => {:width => 100, :height => 100} 

我配置如上.. 但结果如下..

http://graph.facebook.com/636937446/picture?type=#<OmniAuth::Strategy::Options height=100 width=100> 

所以我检查了Facebook的omniauth Strategy.rb文件。请告诉我该怎么办..

def image_url uid, options 
    uri_class = options[:secure_image_url] ? URI::HTTPS : URI::HTTP 
    url = uri_class.build({:host => 'graph.facebook.com', :path => "/#{uid}/picture"}) 

    query = if options[:image_size].is_a?(String) 
     { :type => options[:image_size] } 
    elsif options[:image_size].is_a?(Hash) 
     options[:image_size] 
    end 
    url.query = Rack::Utils.build_query(query) if query 

    url.to_s 
    end 

回答

1

嗨我有同样的问题。我实际上编辑了我的strategy.rb文件,添加了我的自定义功能,并且它工作得很完美。

在第39行:它IMAGE_URL方法这样

def image_url uid, options 
    query = if options[:image_size].is_a?(String) 
     { :type => options[:image_size] } 
    elsif options[:image_size].is_a?(Hash) 
     options[:image_size] 
    end 
    url = build_url("https://graph.facebook.com/","#{uid}/picture",query) if query 

    url.to_s 
    end 

在这里,我打电话叫"build url"另一种方法更改为'image' => image_url(uid,options),

下一个编辑的东西。因此,只要在IMAGE_URL方法后定义"build url"

def build_url(domain,path,params) 
     return domain + "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')) if not params.nil? 
    end 

保存文件并完蛋了!希望对你有帮助!!!

+0

哦,不要忘记在文件顶部添加'require'cgi''作为要求。 – 2013-04-11 10:14:51

+0

这个答案应该被接受 – Raaz 2015-10-26 06:36:13