すみませんが、教えて下さい。
Railsの環境でFacebook認証をやっています。
Facebookのプロフィール写真を持ってくるにはどのようにすれば宜しいでしょうか??
幾つか試してみたのですが、どうも取ってこれていないみたいです。。
##ソースコード
gem Deviseを使っています。
Userモデル
ruby
1class User < ApplicationRecord 2 devise :database_authenticatable, :registerable, 3 :recoverable, :rememberable, :trackable, :validatable, 4 :omniauthable 5 class 6 def find_for_facebook_oauth(auth) 7 where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 8 user.email = auth.info.email 9 user.password = Devise.friendly_token[0,20] 10 user.name = auth.info.name 11 user.image = auth.info.image 12 end 13 end 14 15 def create_unique_string 16 SecureRandom.uuid 17 end 18 19 def create_unique_email 20 User.create_unique_string + "@example.com" 21 end 22 end 23end
OmniauthCallbacksコントローラー
ruby
1class OmniauthCallbacksController < Devise::OmniauthCallbacksController 2 def facebook 3 @user = User.find_for_facebook_oauth(request.env["omniauth.auth"]) 4 5 if @user.persisted? 6 sign_in_and_redirect @user, :event => :authentication 7 set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 8 else 9 session["devise.facebook_data"] = request.env["omniauth.auth"] 10 redirect_to new_user_registration_url 11 end 12 end 13end 14
devise
ruby
1Devise.setup do |config| 2 require "omniauth-facebook" 3 config.omniauth :facebook, ENV['APP_ID'], ENV['APP_SECRET'] 4end
user.image = auth.info.image
上記をuserモデルに追加するだけでは無理なようでした。。
あなたの回答
tips
プレビュー