LINE for Businessのアカウントでお客さんとやり取りした後に、フォーム入力をお願いすることになりました。フォームにメアドやLINEのニックネームを入力をお願いするのもリダンダントなので、LINEログインでメアドやニックネームを取得してフォームに自動入力させてみます。
手順は以下の通り(こちらを見ながらやるとよいと思います)
- LINE developersコンソールでLINEログインのチャネルを作成
- 同コンソールにてコールバックURL設定
- コード書く
用意するコードはログイン開始ページlogin.phpと、コールバックページcallback.phpの2つです。
login.php
$callback_url = "https://example.com/callback.php"; //LINE developersコンソールに設定したURL
$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"
,"LINE developersコンソールのチャネルID"
,$callback_url
,$state
);
header("Location: {$url}");
exit;
callback.php
// アクセストークン取得
$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); //ログインユーザ情報を取得する
$name= $userInfo['displayName']; //LINEのニックネーム
$form_url="https://example.com/form?&entry_username=".$name;//フォームにニックネームを渡す
header("Location: {$form_url}");
これでLINEトークでlogin.phpのページを配信 > 連携 > フォームを開く際に名前やメールが自動入力されるという機能が実現できました。