LoginSignup
6
6

More than 1 year has passed since last update.

PHPでLINEログイン実装してみたメモ①〜認可コードが返ってくるまで〜

Last updated at Posted at 2021-07-25

準備

LINE developersのアカウント作成

まず最初にLINE developersのアカウントを作成します。

プロバイダーとLINEログインチャネル作成

下記概要ページにしたがって「プロバイダー」とLINEログインの「チャネル」を作成します。

概要

  1. devlopersコンソールにログイン
  2. プロバイダー(利用者の情報(LINE IDなど)を取得する開発者・企業・組織のこと)を作成
  3. チャネルを作成

今回はLINEログインチャネルを作成します

  • 「新規チャネル作成」→「LINEログイン」を選択します。 LINE_Developers.png

必須項目を入力して「作成」します。アプリタイプは今回は「ウェブアプリ」を選択します。
FireShot_Capture_098_-_LINE_Developers_-_developers_line_biz.png

LINEログインチャネルの設定

LINEログインアプリを作成すると次のようなページができます。ここでいろいろ情報が確認できます。
LINE_Developers 1.png

チャネルID(チャネルに対してユニークなID)やチャネルシークレットは後々いろいろ必要になってくるのでメモをしておくと良いかもしれません。

webアプリにlLINEログインを組み込む

それでは作成するWEBアプリにLINEログインを組み込んでいきたいと思います。

大枠は下記公式ドキュメントも参照ください。

PHPでコードを書く

まず初めに、PHPで簡単にハローワールドのコードを書きます。

<?php
echo 'Hello, World!!';

ローカルサーバーを立ち上げる

ターミナルを立ち上げ、ファイルが置いてあるディレクトリでPHPのローカルサーバを立ち上げます。-Sがポイントです。

php -S localhost:8000 index.php

localhost_8000.png

にアクセスして「Hello, World!!」が表示されていることを確認します。

ngrokでローカルサーバーを外部からでもつなげるようにする

次に「ngrok」というサービスを使って、自分のPCからしかアクセスできない「ハローワールド」を外からでもアクセスできるようにします。

ngrok公式

ngrokが便利すぎる

ngrokのインストール

下記セットアップページにしたがって、ngrok公式からダウンロードします。

ngrokでサーバーを立ち上げる

先ほどローカルサーバーを立ち上げた同じディレクトリで、下記コマンドを入力してサーバーを立ち上げます。

ngrok http 8000

するとターミナル上に下記が表示され、http or httpsで外部からアクセスができるようになります。
main_php__line-mini-app.png

※フリープランの場合はサーバーを複数立ち上げられません。もしも既に立ち上がっている場合は下記コマンドでサーバーを停止してください。

killall ngrok
// ngrokのサーバー停止

Forwardingにあるhttps://8bbebde7cc12.ngrok.ioにアクセスしてみます。(このURLはサーバーを立ち上げ直すたびに毎回変わります)

https___8bbebde7cc12_ngrok_io.png
ハローワールドが表示されていることが確認できました!

コールバックURLを設定する

次に、コールバックURLを設定します。このURLはLINEの認証突破後に、「認可コード」と「State」を受け取るために設定します。(この2つは後ほどまた出てきます)

ここには先ほどngrokで外部からアクセスできるようにしたURLを設定します。
LINE_Developers 2.png

メールアドレスの取得権限を申請する

メールアドレスの情報を取得したい場合は下記手順で申請をしておきます。

ユーザーに認証と認可を要求する

次に、URLにアクセスした時にLINEの認証画面を挟むように設定します。

とりあえず、URLにパラメータをくっつけます。

URL

https://access.line.me/oauth2/v2.1/authorize

いろいろ複雑なので、まずは必須パラメータのみくっつけて試します。そして私はpostman(https://www.postman.com/)を使ってURLを作りました。

GETにしてurlを入れて、KEYとVALUEにパラメータを入れるとURLができるので便利です。
Postman.png

できたURLはこんな感じです。client_idredirect_uriは適宜変更してください。

https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=**********&redirect_uri=[https://](https://8bbebde7cc12.ngrok.io/)*****************/&state=1238al8esad8&scope=profile%20openid

これをこのままブラウザのURLにコピペしてアクセスします。
FireShot_Capture_098_-_LINE_Developers_-_developers_line_biz_と_PHPでLINEログイン実装してみたメモ_と_FireShot_Capture_098_-_LINE_Developers_-_developers_line_biz_png.png

正しくパラメータが設定できていれば、LINEのログイン画面にアクセスします。
LINE_Login_と_FireShot_Capture_098_-_LINE_Developers_-_developers_line_biz_png.png

401エラーの時

これは私も引っかかって「???」となったのですが、個人LINE等でアクセスしようすると公開前設定のため、アクセスができません。

確認のためにLINEログインチャネルの「権限設定」で個人LINEをメールで招待等で招待しておいてください。また、Tester権限の付与がよいらしい。開発中のアプリのテストのテストができるのはTester権限とのこと。

LINE_Developers 3.png

「ログイン」してみる

次に先ほどの認証画面で「ログイン」を押します。

「Hello, World」の文字が表示されたら成功です!!

ここでアクセス後のURLをよく見てみます。先ほど設定した「コールバックURL」の後ろに何やらいろいろくっついているのがわかります。これがcode(認可コード)stateです。

https___8bbebde7cc12_ngrok_io__code_GFY9wWTWTRItJlKNFeov_state_1238al8esad8.png

このcodeはこの後アクセストークンを発行するために必要な情報になります。アクセストークンを発行することで、LINE上に登録されているユーザー名プロフィール画像ユーザーID等の情報を取得することができます。

次の記事ではこのcodeを使ってアクセストークンを取得し、画面上にLINEのユーザー名や画像を表示させてみたいと思います。

今日のところはここまでです。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6