web-dev-qa-db-ja.com

devise2.0のomniauthを使用してFacebookからユーザープロファイルの全体像を取得する

Facebookからユーザープロファイルの大きな画像または通常の画像を取得したい。今、私はこのコードでユーザープロフィール写真から正方形のバージョンを取得します:

:image => access_token.info.image
# http://graph.facebook.com/id/picture?type=square

大きいバージョンまたは通常のバージョンを入手するにはどうすればよいですか?

または、アプリ、このURLで最後の単語を置き換えるにはどうすればよいですか?.

どうもありがとうございました!

22
hyperrjas

以下は、Facebookで許可されている4つの異なるサイズのプロフィール写真です。

http://graph.facebook.com/id/picture?type=small
http://graph.facebook.com/id/picture?type=square
http://graph.facebook.com/id/picture?type=large
http://graph.facebook.com/id/picture?type=normal
26
vishnu

ログイン時に別のサイズの画像を取得したい場合、omniauth-facebook戦略には、要求される画像を変更するオプションがあります。

image_size:認証ハッシュで返される画像のURLのサイズを設定します。

たとえば、全体像はomniauth.rbで次のように要求されます。

provider :facebook, 'secrets', 'sekrets', :image_size => 'large'

https://github.com/mkdynamic/omniauth-facebook#configuring

32
Derek Lucas

DBに保存すると、次のようになりますaccess_token.info.image.split("=")[0] << "=large"

大きく変更して、好きなサイズにします。

または、ビューにさまざまなサイズを表示するためのヘルパーメソッドを使用することもできます。

def profile_photo(type="large")
  puts @user.image.split("=")[0] << "=#{type}"
end

profile_photo("small") #=> http://url?type=small

profile_photo("square") #=> http://url?type=square

profile_photo #=> http://url?type=large

profile_photo("normal")  #=> http://url?type=normal
4
Justin

設定ファイルを変更する代わりに、URLに+ "?type=large"を追加しました。

<%= image_tag current_user.image + "?type=large" %>

そのため、いつでもさまざまなサイズをリクエストできます。

<%= image_tag current_user.image + "?type=normal" %>

<%= image_tag current_user.image + "?type=small" %>

2
Allan