Facebookからユーザープロファイルの大きな画像または通常の画像を取得したい。今、私はこのコードでユーザープロフィール写真から正方形のバージョンを取得します:
:image => access_token.info.image
# http://graph.facebook.com/id/picture?type=square
大きいバージョンまたは通常のバージョンを入手するにはどうすればよいですか?
または、アプリ、このURLで最後の単語を置き換えるにはどうすればよいですか?.
どうもありがとうございました!
以下は、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
ログイン時に別のサイズの画像を取得したい場合、omniauth-facebook戦略には、要求される画像を変更するオプションがあります。
image_size:認証ハッシュで返される画像のURLのサイズを設定します。
たとえば、全体像はomniauth.rbで次のように要求されます。
provider :facebook, 'secrets', 'sekrets', :image_size => 'large'
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
設定ファイルを変更する代わりに、URLに+ "?type=large"
を追加しました。
<%= image_tag current_user.image + "?type=large" %>
そのため、いつでもさまざまなサイズをリクエストできます。
<%= image_tag current_user.image + "?type=normal" %>
<%= image_tag current_user.image + "?type=small" %>