どうも、フリーランスプログラマのTakaです。
今回は仕事でLINEログインを実装する機会があったので、LaravelにLineログインを実装してプロフィール情報を取得する方法を紹介したいと思います。と言ってもLaravelだからと言って特別なことをするわけではなく、Laravelのフレームワークに合わせたただのPHPコーディングになります。
環境
なお、今回はLaravelがインストールされているという前提で進めていきたいと思います。ちなみにLaravelのバージョンは下記のバージョンで試していきたいと思います。
今回の環境
- Laravel 5.8系
LINE Developersでプロバイダーを作成する
まずは、LINEログイン機能を利用するためにはLINE Developersでプロバイダーを作成する必要があります。
ログイン
まずは、LINE Developersにログインします。ログインは上記のリンク先から可能です。アカウントを持っていない方は作りましょう。
LINEアカウントを持っていれば、そのアカウントを使ってする作れますよ!
プロバイダーを新規作成
ログインしたら、まずプロバイダーを新規に作成します。プロバイダーは下図の通り、プロバイダーページの「作成」ボタンから作成することができます。
作成ボタンをクリックすると、下図のように「新規プロバイダー作成」パネルが表示されるので、任意の「プロバイダー名」を入力します。今回は「Sample」としたいと思います。
プロバイダー名を入力したら、テキストボックスの下にある「作成」ボタンをクリックしてプロバイダーを作成します。
LINEログインチャネルを作成
続いて、チャネル設定をしていきます。今回はLINEログイン機能を使いたいので、下図のハイライト部分「LINEログイン」を選択します。
選択すると、下図のようにチャネルの詳細情報を入力していきます。
それぞれの入力項目は下記の通りです。それぞれに必要な情報を入力してください。
チャネル詳細設定
- チャネルアイコン(任意)
- チャネル名(必須)
- チャネル説明(必須)
- アプリタイプ(必須)
- メールアドレス(必須)
- プライバシーポリシーURL(任意)
- サービス利用規約URL(任意)
なお、アプリタイプの箇所は今回はWeb上で展開するので、Webアプリを選択してください。
コールバックURLの設定
最後に、「LINEログイン」タブを開いて「コールバックURL」を設定します。下図では、デフォルトで入力されているURLが表示されていますが、「app.example.com」の部分をLINEログインを利用したいWebサイトのドメインに置き換えてください。もちろん、「callback」の部分関しても任意のものに変更しても構いません。
これでLINEのプロバイダー作成は完了になります。
Controllerの作成
では、続いてLaravel側のコーディングをしていきたいと思います。
まずは、今回LINEログインを実装するにあたって、ログイン処理をするコントローラーを生成します。
今回は下記のようにartisanコマンドを使って「LineLoginController」という名前のコントローラーファイルを作成したいと思います。
生成したら「app/Http/Controllers」ディレクトリ配下に「LineLoginController.php」というファイルが出来ていると思うので、そのファイルを開いて、まずは下記コードを追加します。
このコードはログイン処理の過程でアプリケーション側でランダムなトークンを作成する必要があるのですが、その際にStrヘルパを利用して生成するのであらかじめ読み込んでおきます。
リダイレクト処理
続いて、下記のメソッドを追記します。
内容的にはLINEログインに必要なパラメータを設定して、LINEの認証URLにリダイレクトさせています。
LINEログインに必要なパラメータは公式サイトのドキュメントの「認可を要求する」の章の記載があるのでそちらを参照してください。
パラメータの「state」と「nonce」に関しては、それぞれCSRFとリプレイアタックの防止のためにアプリケーション側でトークン(ランダム)を作成しないといけないので、LaravelのStrヘルパを使って生成します。
その他、「client_id」と「redirect_uri」に関してはLINE Developersのチャネルページを確認して入力してください。
アクセストークン取得
次に、下記のメソッドを追加します。
ここでは、先ほどのリダイレクト処理でLINE APIからcallbackページへ返ってきた値を使って、アクセストークンを取得しています。
具体的には「code」というパラメータに格納されている値を使って、POSTメソッドでLINE APIを叩くとアクセストークンが返ってきます。
なお、「client_secret」に関しては、これもLINE Developersのチャネルページに記載があるのでそちらを参照してみてください。
プロフィール取得
続いて、下記のメソッドを追加します。
ここでは、さきほど取得したアクセストークンを使って、再度LINE APIにアクセスしてユーザーのプロフィール情報を取得しています。
アクセスすると、json形式でプロフィール情報を返してくれるのでデコードします。
callbackページ表示
そして、最後に下記のメソッドを追加します。
ここでは、先ほど作成したアクセストークンとプロフィール情報取得のメソッドを叩いて、その情報をVIewに渡しています。
これでコントローラーの処理は終わりです。
Routingの設定
続いて、ルーティングの設定をします。
ルーティングは、「routes/web.php」を開いて下記のように編集します。
ルーティングは単純に、さきほどコントローラーで作成したリダイレクト処理のlineloginメソッドとcallbackメソッドに紐づくようにルーティングしてあれば大丈夫です。
Viewの設定
ここでまで来れば、あとは見た目の部分を整えるだけになりますが、今回はLINEログインをして単純にプロフィール情報を表示するだけなので、Laravelのデフォルトのレイアウトを踏襲し少しだけカスタマイズしたいと思います。
まずは、Laravelのwelcome.bladeを少しだけ下記のようにカスタママイズします。
続いて、callbackページのレイアウトもwelcomeページのものを流用し下記のようにしてみました。
これでLINEログインをして取得したプロフィール情報が画面中央に表示されるようになるかと思います。
まとめ
ということで、今回はLaravleでLINEログインを使ってプロフィール情報を取得する方法を紹介しました。とりあえず基本的な流れとしてはこんな感じで取得できるので興味がある方は試してみてください。
てことで、今回はここまで!また!