Line Login
アプリケーションやBOTへのLineユーザログイン機能をWEBサイトに組み込み処理を行う。
LineDevelopersサイトにチャンネルを登録する。
新規チャネル作成
チャネルの種類 : LINEログイン
プロバイダー : newprovider
提供する地域 : 日本
所在国・地域 : 日本
チャネルアイコン :
チャネル名 : newchanel
アプリタイプ : ウェブアプリ
メールアドレス : name@you.example
チャネル基本情報
チャネルID : xxxxxxxxxx
アプリタイプ : ウェブアプリ
権限 : PROFILE CHAT_MESSAGE OPENID_CONNECT OC_EMAIL
チャネルシークレット : 12a03456b0c456074e157150049ad7c5 乱数
LINEログイン設定
ウェブアプリでLINEログインを利用する
bot/login.php
$callback_url = "https://example.com/bot/callback/"; $state = rand(); $url = sprintf( "https://access.line.me/oauth2/v2.1/authorize? response_type=code&client_id=%s&redirect_uri=%s&state=%s&scope=profile openid email" ,$client_id, $callback_url, $state ); <a href="<?php echo $url; ?>"><img src="img/btn_login_base.png"></a>
Lineのaccess.line.me/oauth2/v2.1/loginにアクセスして認証されればデータがcallbackに返ってくる。
callbackでの処理
bot/callback/index.php
1: アクセストークンからプロファイル取得 $url = "https://api.line.me/oauth2/v2.1/token"; $postData = array( "grant_type" => "authorization_code", "code" => $_GET["code"], "redirect_uri" => "https://example.com/callback.php", //LINE developersコンソールに設定したURL "client_id" => "LINE developersコンソールのチャネルID", "client_secret" => "LINE developersコンソールのチャネルシークレット" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/oauth2/v2.1/token'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $json = json_decode($response); $accessToken = $json->access_token; //アクセストークンを取得 $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $accessToken)); curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/profile'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $json = json_decode($response); $userInfo= json_decode(json_encode($json), true); //ログインユーザ情報を取得する $displayName= $userInfo['displayName']; //LINEのニックネーム $userId= $userInfo['userId']; //LINEのユーザーID $pictureUrl= $userInfo['displayName']; //プロフィール画像のURL