今、OAuth認証機能を自作アプリに実装しようとして、
gem devise_token_authを使っていますがうまく行きません。
下のサイトを参考にしています。
https://note.com/mumii/n/n4d8bf6a473c6
今詰まっているのが、devise_token_authのOmniauthCallbacksControllerを別controllerにオーバーライドして、書き換えるメソッド以外はsuperでそのまま使おうとしています。
下のようなルーティング先にアクセスすることで、認証先のページ(今回はtwitter)に飛ぶようにしています。
GET /api/v1/:provider/callback(.:format) api/v1/omniauth_callbacks#omniauth_success
[アクセス先] https://〇〇/api/v1/twitter/callback
ですが、上のURLにアクセスすると下のようにエラーが起きます。
OmniauthCallbacksControllerを継承できていないと思ったのですが、
継承できていることはrails consoleにて確認しました。
オーバーライド先のcontrollerは下のようになっています。
class Api::V1::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController include Devise::Controllers::Rememberable def redirect_callbacks p "==========" p "redirect_callbacks" super end def omniauth_success super public_method(:omniauth_success).super_method.call end def omniauth_failure super end protected def assign_provider_attrs(user, auth_hash) case auth_hash['provider'] when 'twitter' user.assign_attributes({ nickname: auth_hash['info']['nickname'], name: auth_hash['info']['name'], image: auth_hash['info']['image'], email: auth_hash['info']['email'] }) else super end end end
お手数ですが、ご教授頂けますと幸いです。
あなたの回答
tips
プレビュー