###質問
Railsで開発しています。deviseとomniauth, omniauth-oauth2, omniauth-lineのGemを使って、ライン認証にて、id_tokenを取得しようとしています。しかし、omniauth-lineではoauth認証のためopenidconnectに対応すべく自作しようと思っています。その際に、strategyを自作する場合は
①自作ストラテジーをbuildするファイルはどこのファイルパスに置くべきですか。
②自作ストラテジー自体はどこのファイルパスに置くべきですか
③deviseを用いているので自動でomniauthのstrategyを読み込まれてしまいます。自作ストラテジーを以下のようにして読み込めますか。また、その場合はどのように読み込みますか。
config.omniauth :line, ENV['LINE_APP_ID'], ENV['LINE_APP_SECRET'], scope: 'profile email openid'
宜しくお願い致します。
###試したこと
自作ストラテジーをアプリの中のlib/omniauth/strategies/line.rbに配置し、initializers/omniauth.rbにて以下のようにstrategyをbuildしました。
Rails.application.config.middleware.use OmniAuth::Builder do require 'omniauth/strategies/line' config.omniauth :line, ENV['LINE_APP_ID'], ENV['LINE_APP_SECRET'], scope: 'profile email openid' end
自作strategyが追加されたかrake middlewareで確かめましたところ、そもそも以下のようなエラーが起きていて追加されません。
NameError: undefined local variable or method `config' for #<OmniAuth::Builder:0x000002a677aa3e60> Did you mean? configure
ちなみにdeviseでbuildしないのかというと、initializes/devise.rbで以下のようにビルドするとシステムのlib/omniauth/strategy/line.rbを読み込んでしまいまうからと思ったからです。
config.omniauth :line, ENV['LINE_APP_ID'], ENV['LINE_APP_SECRET'], scope: 'profile email openid'
そこで、omniauth-lineのgemをアンインストールして上記を試してもアプリの中の結局はlib/omniauth/strategies/line.rbは読み込まれません。
また、initilizers/omniauth/strategies/line.rbとしている人もいましたがそれでも読み込まれませんでした。
結局、deviseを使ってるときはdevise.rbからどのようにして自作strategyをbuildするしかないとdevise使ってたら無理なのかと思ったり、もうgemインストールしたlib/omniauth/strategies/line.rbを直接編集しちゃっていいかなとかも思いました。。。
###環境
Ruby version 2.7.3
Rails version 6.1.4.1
あなたの回答
tips
プレビュー