[rails]omniauth-twitterで大きいサイズ(bigger)のプロフィール画像を取得する


[まとめ] 現在開催中のKindleセール情報はこちら

ruby2.1, rails4.1.1で確認

omniauth-twitterを使ってtwitter認証を行った際にプロフィール画像を取得したかったのですが、デフォルト設定だと、auth[‘info’][‘image’]に入ってくる画像URLの画像サイズが小さいので、大きい画像を取得するようにしました。

initializerの引数にハッシュで画像サイズを指定すると大きいサイズで取得できるようになりました。

  • onfig/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter,
    Rails.application.secrets.twitter_api_key,
    Rails.application.secrets.twitter_api_secret,
    {
      secure_image_url: 'true',
      image_size: 'bigger'
    }
end

mini(24×24), normal(48×48), bigger(73×73), original(アップロード時のサイズ)の4種類が指定できるようです。

詳細は公式ドキュメントをご確認ください。

omniauthではなくtwitter gemの場合は

user = client.user('hilotter')
user.profile_image_url.to_s.sub('normal', 'bigger')

としてsubで置換すれば大きいサイズの画像が取得できます。(omniauth-twitterも内部で同じ処理が書かれていました)

参考

[まとめ] 現在開催中のKindleセール情報はこちら