我想从 facebook 获取用户个人资料大图或普通图片。现在我使用以下代码从用户个人资料图片中获取方形版本:
:image => access_token.info.image
# http://graph.facebook.com/id/picture?type=square
如何获得大版本或普通版本?
或者和应用程序,我如何在这个 url 中替换最后一个单词,大而不是正方形......
非常感谢你!
我想从 facebook 获取用户个人资料大图或普通图片。现在我使用以下代码从用户个人资料图片中获取方形版本:
:image => access_token.info.image
# http://graph.facebook.com/id/picture?type=square
如何获得大版本或普通版本?
或者和应用程序,我如何在这个 url 中替换最后一个单词,大而不是正方形......
非常感谢你!
如果您想在登录时获取不同尺寸的图片,omniauth-facebook 策略可以选择更改请求的图片。
image_size:设置 auth hash 中返回的图片 url 的大小。
例如,将通过以下方式在 omniauth.rb 中请求大图:
provider :facebook, 'secrets', 'sekrets', :image_size => 'large'
以下是 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
当您将其保存到数据库中时,您可以这样做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
而不是更改配置文件,我只是添加+ "?type=large"
到 url。
<%= image_tag current_user.image + "?type=large" %>
所以你可以随时要求不同的尺寸。
<%= image_tag current_user.image + "?type=normal" %>
<%= image_tag current_user.image + "?type=small" %>