LINE Login 用の OmniAuth ストラテジーです。OpenID Connect の ID トークンからメールアドレスを取得できます。
kazasiki/omniauth-line のフォーク版で、LINE の /oauth2/v2.1/verify API による ID トークン検証機能を追加しています。
Gemfile に追加してください:
gem 'omniauth-line-login'その後 bundle install を実行します。
# config/initializers/omniauth.rb または devise.rb
config.omniauth :line, ENV['LINE_CHANNEL_ID'], ENV['LINE_CHANNEL_SECRET'],
scope: 'profile openid email'重要: メールアドレスを含む ID トークンを取得するには email スコープが必要です。LINE Developers Console のチャネル設定で「メールアドレス取得権限」を申請してください。
オリジナルの omniauth-line は LINE の /v2/profile API のみを呼び出すため、メールアドレスを返しません。本フォークでは以下を追加しています:
- ID トークン検証 — LINE の
/oauth2/v2.1/verifyAPI によるサーバーサイド検証 info[:email]— 検証済み ID トークンのクレームから取得したメールアドレスinfo[:email_verified]— ID トークンのemail_verifiedクレームextra[:id_token_claims]— デバッグや拡張用の ID トークンクレーム全体
{
uid: 'U02fa1e93...',
info: {
name: '表示名',
image: 'https://profile.line-scdn.net/...',
description: 'ステータスメッセージ',
email: 'user@example.com', # 追加
email_verified: true # 追加
},
extra: {
raw_info: { ... }, # LINE /v2/profile レスポンス
id_token_claims: { ... } # 追加: 検証済み ID トークンクレーム
}
}ID トークンが存在しない場合(openid スコープ未指定など)や verify API がエラーを返した場合、email と email_verified は nil になります。アプリケーション側で独自のメール収集フローにフォールバックできます。エラーは OmniAuth.logger で記録されます。
本 gem では nonce 検証は行いません。nonce のバリデーションが必要な場合は、extra[:id_token_claims]['nonce'] から nonce を取得してコールバックコントローラーで検証してください。
MIT License。詳細は LICENSE を参照してください。
オリジナル: kazasiki/omniauth-line
リポジトリ: buferago/omniauth-line