Rails4.2 Devise + omniauthでソーシャルログイン時はメール認証とメール送信をスキップしたい。
omniauthを使ってFacebook、Twitterのログインと通常のメールアドレス登録を実装しています。
deviseでメール認証する(confirmable)ようにしました。。
FacebookとTwitterのログインのときには、メール認証せずにログインするようにしたいので
下記のように@user.skip_confirmation!
を追加し無事認証はできるようになったのですが
認証メールが送られる状態です。どうすればメールを送らないようにできるでしょうか?
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
callback_from :facebook
end
def twitter
callback_from :twitter
end
private
def callback_from(provider)
provider = provider.to_s
@user = User.find_for_oauth(request.env['omniauth.auth'])
@user.skip_confirmation!
if @user.persisted?
flash[:notice] = I18n.t('devise.omniauth_callbacks.success', kind: provider.capitalize)
sign_in_and_redirect @user, event: :authentication
else
if provider == 'twitter'
session["devise.twitter_data"] = request.env["omniauth.auth"].except("extra")
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
end
redirect_to new_user_registration_url
end
end