9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINEログインをPHPで実装する

Posted at

LINE for Businessのアカウントでお客さんとやり取りした後に、フォーム入力をお願いすることになりました。フォームにメアドやLINEのニックネームを入力をお願いするのもリダンダントなので、LINEログインでメアドやニックネームを取得してフォームに自動入力させてみます。

手順は以下の通り(こちらを見ながらやるとよいと思います)

  1. LINE developersコンソールでLINEログインのチャネルを作成
  2. 同コンソールにてコールバックURL設定
  3. コード書く

用意するコードはログイン開始ページ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のページを配信 > 連携 > フォームを開く際に名前やメールが自動入力されるという機能が実現できました。

9
7
3

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
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?