質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

380閲覧

[Rails][Devise][Carrierwave]を使ってTwitter認証でprofile画像を取得する方法

ohoh5454

総合スコア92

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/12 18:57

deviseでログイン機能を実装したアプリの制作中にomniauth-twitterを使用したTwitter認証時に画像を取得したいのですがどうしてもうまくいきません。

ruby

1#user.rb 2class User < ApplicationRecord 3 # Include default devise modules. Others available are: 4 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 5 devise :database_authenticatable, :registerable, 6 :recoverable, :rememberable, :validatable, 7 :omniauthable, omniauth_providers:[:twitter] 8 9 mount_uploader :profile_image, ImageUploader 10~省略 11 def self.from_omniauth(auth) 12 find_or_create_by(provider: auth["provider"], uid: auth["uid"]) do |user| 13 user.provider = auth["provider"] 14 user.uid = auth["uid"] 15 user.username = auth["info"]["nickname"] 16 user.remote_profile_image_url = auth["info"]["image"] 17 puts user.remote_profile_image_url 18 user.twitter_url = auth["info"]["urls"]["Twitter"] 19 end 20 end

ruby

1image_uploader.rb 2class ImageUploader < CarrierWave::Uploader::Base 3 4 # Choose what kind of storage to use for this uploader: 5 storage :file 6 # storage :fog 7 8 # Override the directory where uploaded files will be stored. 9 # This is a sensible default for uploaders that are meant to be mounted: 10 def store_dir 11 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 12 end 13 14 # Provide a default URL as a default if there hasn't been a file uploaded: 15 def default_url(*args) 16 # For Rails 3.1+ asset pipeline compatibility: 17 ActionController::Base.helpers.asset_path("fallback/" + [version_name, "no-image.png"].compact.join('_')) 18 19 # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 20 end 21 22 23end 24

このコードだとprofile_imageにはnilが帰ってきます
画像はpublic/uploads/tmp/長い数字/画像ファイルという感じで配置されます
参考記事
Carrierwaveでアップロードされたファイルはpublic/uploads/user/profile_image/user.id/画像ファイルというように配置されます。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問