今回は、ログイン認証にLINEログインを利用する方法を解説します。
基本的な流れ
大まかな手順は、下記の通り
- LINE DevelopersでLINEログインのチャンネルを準備する
- LINE Socialiteをインストールする
- Laravel側にLINEログインチャンネルの情報を設定する
- ログイン後のコールバック先をLINEログインチャンネルに設定する
1.LINEログインチャンネルを用意する
コチラの公式の解説を参照して準備してください
2.LINE Socialiteをインストールする
composerでsocialiteとsocialiteのLINEプロバイダーをインストールします
composer require laravel/socialite
composer require socialiteproviders/line
3.LaravelでLINEログインにアクセスする
公式では環境変数にLINEログインチャンネルの情報を設定していますが、ここではconfigファイルから参照するように設定します。
configにline.php(例)を作成し、下記の情報を設定します
return [
'LINE_CLIENT_ID' => 'チャンネルIDを指定',
'LINE_CLIENT_SECRET' => 'チャンネルシークレットを指定',
'LINE_REDIRECT_URI' => 'LINEログインからのコールバック先URL',
];
コールバック先URLの例:http://4f11-133-106-192-58.ngrok.app/login/callback
上記、設定をconfig/services.phpに追記します
'line' => [
'client_id' => config('line.LINE_CLIENT_ID'),
'client_secret' => config('line.LINE_CLIENT_SECRET'),
'redirect' => config('line.LINE_REDIRECT_URI'),
],
app/Providers/EventServiceProvider.php にプロバイダーイベントリスナーを追記する
protected $listen = [
//others...
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
\SocialiteProviders\Line\LineExtendSocialite::class.'@handle',
],
];
LINEログインへのリダイレクトと、コールバックへのルーティング追加
use Laravel\Socialite\Facades\Socialite;
Route::get('/login', function() {
return Socialite::driver('line')->redirect();
})->name('login');
Route::get('/login/callback', [XXXController::class, 'callbackhandler']);
4.LINEログインチャンネルにコールバック先のURLを登録する
手順3までで、LINEログインを利用するLaravel側の手順は完了です。最後、Laravel側に設定したコールバック先URLを忘れずにLIENログインチャンネルにも設定しておきます。これが出来ていなかったり、異なるURLを設定していると不一致としてLINEログイン側にはじかれます。
LINE Developersのログインチャンネルから、「LINEログイン設定」→コールバックURLに登録しておきます。
※デバッグなどでngrokを使用している際は、URLが変わる度にlaravel側とログインチャンネル双方を変更しておく
コメント