2

私はmongoid、rails 3.2.10、omniauthをdeviseで使用しています..そしてFacebookのプロフィール画像URLのカスタムimage_sizeを設定しようとしています

 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
4

1 に答える 1

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

ファイルを保存して完了です!! それがあなたのために働くことを願っています!!!

于 2013-04-11T09:34:41.217 に答える