この記事を元にdeviseを使ってツイッターでログインできるサイトを作る際、何個かエラーに遭遇したのでここに解決法を書いときます。
Railsのバージョンは5.1.6です。
Sign in with Twitter をクリックするとUnauthorized 403 Forbidden
Twitter AppsのSettingで callback URLsに
http://127.0.0.1:3000/users/auth/twitter/callback
http://localhost:3000/users/auth/twitter/callback
を追加
詳細
Sign in with Twitterの後 undefined method `current_sign_in_at
db/migrate/[time]_devise_create_users.rb
#...
## Trackable 以下のコメントを外す
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
#...
キャッシュでエラー
app/controllers/users/omniauth_callbacks_controller.rb
def callback_from(provider)
provider = provider.to_s
@user = User.find_for_oauth(request.env['omniauth.auth'])
if @user.persisted?
flash[:notice] = I18n.t('devise.omniauth_callbacks.success', kind: provider.capitalize)
sign_in_and_redirect @user, event: :authentication
else
# 最後に .except("extra") を付ける
session["devise.#{provider}_data"] = request.env['omniauth.auth'].except("extra")
redirect_to new_user_registration_url
end
end