rails6.1.0
自サービスにLINEアカウントによるソーシャルログインを追加中です。
アカウントを新規作成するため、ログイン時はSNSからアプリ側へ「email」を渡す必要があります。
Google、Facebook、Twitterなどは、Omniauth認証でeamilを取得出来ますがLINEでは取得できませんでした。
LINEでemailを取得しようと思ったら、Omniauthではなく「OpenID connect」を使うそうです。
RailsでOpenID connectを用いたLINEログイン
LINE Developerのページから「OpenIDコネクト」を申請しました。
「適用」と表示されてるので申請は通ったようです。
同ページ、権限の箇所も「プロフィール OPENID_CONNECT OC_EMAIL」
となっているため取得する準備は整ったようです。
あとはコード側ですが、以下を参考にしました。
omniauth-linegemのomniauth/strategies/line.rbオーバーライドすれば良いとありました。
config\initializers\omniauth\strategies\line.rb
ruby
1require 'omniauth-oauth2' 2require 'jwt' 3 4module OmniAuth 5 module Strategies 6 class Line < OmniAuth::Strategies::OAuth2 7 option :scope, 'email profile openid' 8 9 info do 10 { 11 name: raw_info['displayName'], 12 image: raw_info['pictureUrl'], 13 description: raw_info['statusMessage'], 14 email: JWT.decode(access_token.params['id_token'], ENV['client_secret']).first['email'] 15 } 16 end 17 end 18 end 19end
こちらを追加しLINEログインすると以下のエラーになりました。
JWT::DecodeError No verification key available
Context has changed to: config/initializers/omniauth/strategies/line.rb:14:in `block in <class:Line>' >>
###試したこと
該当行をコメントアウトしても同じエラーでした。
1つずつコメントアウトしても変わらないため最終的にline.rbを空にしてみました。
ruby
1require 'omniauth-oauth2' 2require 'jwt' 3 4module OmniAuth 5 module Strategies 6 class Line < OmniAuth::Strategies::OAuth2 7 8 end 9 end 10end
JWT::DecodeError No verification key available
Context has changed to: config/initializers/omniauth/strategies/line.rb:14:in `block in <class:Line>' >>
###分からないこと
デコード対象がないのになぜデコードエラー??
中身を空にして14行目はないのになぜline.rb:14でエラー??
ここで行き詰まってしまいました。
分かる方教えていただけると幸いです。
宜しくお願い致します。
あなたの回答
tips
プレビュー