2013-03-20 3 views
2

Я использую Mongoid, рельсы 3.2.10 и OmniAuth на завещанию .. и пытается создать пользовательские IMAGE_SIZE из facebook профиля URL изображения
нестандартного размера изображения в завещанию + 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' => image_url(uid,options),

Следующая редактировать метод 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_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'' в качестве требования в верхней части файла. –

+0

этот ответ должен быть принят – Raaz

 Смежные вопросы

  • Нет связанных вопросов^_^