[rails]omniauth-twitterで大きいサイズ(bigger)のプロフィール画像を取得する
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(24x24), normal(48x48), bigger(73x73), original(アップロード時のサイズ)の4種類が指定できるようです。
詳細は公式ドキュメントをご確認ください。
omniauthではなく twitter gemの場合は
user = client.user('hilotter')
user.profile_image_url.to_s.sub('normal', 'bigger')
としてsubで置換すれば大きいサイズの画像が取得できます。(omniauth-twitterも内部で同じ処理が書かれていました)