LaravelにはオフィシャルパッケージとしてSocialiteというのが用意されています。これを使うとFacebook, Google, linkedIn, GitHub, BitbucketといったサービスでのOAuth認証を簡単に実装してくれます。プロバイダーとして使えるサービスはこれ以外にもたくさんあって、Socialite Providersにいくと有名どころのサービスのプロバイダーがもれなく用意されています。残念ながらLINEのOAuth認証がこのリストになかったので、自分で用意することになりました。ということでLaravelにLINE loginを実装する手順をまとめてみました。ここではLaravel側の手順を説明するため、LINE側でのビジネスアカウントの作成、チャンネルの作成、LINE Loginの有効化までは終わっているものとします。

Laravelプロジェクトの作成

Laravelがないと始まらないので、globalにインストールしたlaravelを
laravel new example
でnewします。

Laravel SocialiteのインストールとLINE用アダプターの追加

composer require laravel/socialite
でSocialiteを追加します。composer require が終わったら、SOcialiteにLINE用のアダプターを追加します。まずは vendor/laravel/socialite/src/SocialiteManager.php に以下のプライベートメソッドを実装します; さらに vendor/laravel/socialite/src/Two/LineProvider.php を以下の内容で作成します; Socialite側の修正は以上です。

Laravel SocialiteをLaravel側で有効化させる

次はSocialiteのLaravel側の設定です。config/app.phpにSocialiteServiceProviderを登録します; 同じファイルにSocialiteファサードをaliases配列に追加します; .envにLINE LoginのChannel ID, Channel Secret, Callback URLを追加します; [Channel ID], [Channel Secret], [Callback URL]には取得したものを入力してください。 config/services.phpにクレデンシャルを追加します; 以上でSocialiteでのLINEログイン実装の準備が終わりました。

デフォルトのモデルの修正

最低限の実装をするために、デフォルトで用意されているapp/User.phpのUserモデルを修正します; マイグレーションもあらかじめ用意されているdatabase/migrations/2014_10_12_000000_create_users_table.phpを修正します; モデルとマイグレーションの修正が終わったら、php artisan migrate でデータベースを用意してmigrateします。これでデータベース内にしかるべきテーブルが作成されます。

コントローラの追加

モデルの次はコントローラにルーターを追加します。OAuth providerへリダイレクトするためのルーターと、認証された後にコールバックを受け取るルーターの二つが必要となります。app/Http/Controllers/AuthController.php に以下の内容を記述します; ログアウト用の処理も追加してあります。上記のログイン処理、ログイン後のコールバック処理に加えて、ログイン後のダッシュボード用のコントローラも用意します; コンストラクタでauth middlewareを呼び出すことで、ログインしていないユーザが dashboard にアクセスできないようにしています。

ルーターの追加

routes/web.php にルーターを追加します。

ビューの作成

最後にビューを作成します。とりあえず最低限ということで、まずはログインボタンを設置するトップページとして、デフォルトの welcome.blade.php を触ります; LINEのログインボタン用の画像はLINEの開発者ページからダウンロードしてきて、public/images ディレクトリを作成して画像ファイルを入れておいてください。 もう一つ必要なのが、ログイン後のダッシュボード画面です。これも最低限ということでこんな感じです;

ログインしてみる

php artisan serve
でローカルサーバを立ち上げて、ブラウザでhttp://localhost:8000へアクセスしたら、LINE loginボタンをクリックしてください。LINEのログイン画面が現れるので、メールアドレスとパスワードを入力してLOGINをクリックするとhttp://localhost:8000/dashboardへ飛んでダッシュボードが表示されると思います。