質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OpenID

OpenIDは、様々なWebサイトで 1つのID情報のみで認証が可能にするサービスです。

Q&A

受付中

LINEアカウントでのソーシャルログインで「No verification key available」のエラー

pecchan
pecchan

総合スコア536

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OpenID

OpenIDは、様々なWebサイトで 1つのID情報のみで認証が可能にするサービスです。

0回答

0グッド

0クリップ

730閲覧

投稿2021/11/03 00:55

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オーバーライドすれば良いとありました。

Rails】LINEログインでemailを取得する

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 &lt;class:Line&gt;' >>

###試したこと
該当行をコメントアウトしても同じエラーでした。
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 &lt;class:Line&gt;' >>

###分からないこと
デコード対象がないのになぜデコードエラー??
中身を空にして14行目はないのになぜline.rb:14でエラー??

ここで行き詰まってしまいました。

分かる方教えていただけると幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

OpenID

OpenIDは、様々なWebサイトで 1つのID情報のみで認証が可能にするサービスです。