【问题标题】:get user profile large picture from facebook with omniauth in devise 2.0在devise 2.0中使用omniauth从facebook获取用户个人资料大图
【发布时间】:2012-05-18 22:22:55
【问题描述】:

我想从 facebook 获取用户个人资料的大图片或普通图片。现在我使用以下代码从用户个人资料图片中获取方形版本:

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

如何获得大版或普通版?

或者和应用程序,我怎样才能在这个网址中替换最后一个单词,大而不是正方形......

非常感谢!

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-3 facebook-graph-api omniauth


    【解决方案1】:

    以下是 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
    

    【讨论】:

    • 谢谢,但我知道这 4 种不同尺寸的个人资料图片。我的问题是我从数据 facebook 收到方形版本,我想在我的 rails 应用程序中使用其他 3 个版本。谢谢!
    • 这告诉你尺寸,但并不能真正解决问题
    • 更改 url 以反映不同的大小。您已经拥有照片 ID,因此您拥有所需的一切
    【解决方案2】:

    如果您想在登录时获取不同尺寸的图片,omniauth-facebook 策略可以选择更改请求的图片。

    image_size:设置auth hash中返回图片url的大小。

    例如,在omniauth.rb 中会以这种方式请求大图:

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

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

    【讨论】:

    • 谢谢我已经在我的 devise.rb 文件中为我检查了这个修复,但它对我来说不起作用:(。我收到了方形版本。我正在使用带有 omniauth-facebook 的 devise 2.0 (1.2 .0) 宝石!
    • 这是这个问题的正确答案!为人们点赞! :)
    • 现在,如果这没有破坏内容欺骗解决方法github.com/thoughtbot/paperclip/issues/…
    • 这在 2017 年 4 月末运行良好。只需确保在对“initializers”目录中的文件进行任何更改后重新启动应用程序即可;)
    【解决方案3】:

    当你将它保存到数据库中时,你可以这样做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】:

      我没有更改配置文件,而是将 + "?type=large" 添加到 url。

      &lt;%= image_tag current_user.image + "?type=large" %&gt;

      因此您可以随时请求不同尺寸的产品。

      &lt;%= image_tag current_user.image + "?type=normal" %&gt;

      &lt;%= image_tag current_user.image + "?type=small" %&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 2014-08-19
        • 1970-01-01
        相关资源
        最近更新 更多