LINE Login – LINE 提供的免費登入機制 (程式碼範例)
LINE Login – LINE 提供的免費登入機制 (程式碼範例):
以下為技術細節,可由技術人員觀看囉~
首先你需要一個登入畫面,放上一個LINE LOGIN的按鈕,類似這樣:
如果需要取得用戶的EMAIL, scope需要加上email:
<div class="login-page"> <div class="form"> <img src="line_login.png" alt="LINE LOGIN" height="44" width="279"> <button onclick="LineAuth()" class="button2">前往用LINE登入</button> </div> </div> <script> function LineAuth() { var URL = 'https://access.line.me/oauth2/v2.1/authorize?'; URL += 'response_type=code'; URL += '&client_id=xxxxxxxx'; URL += '&redirect_uri=https://www.xxxxx.com.tw/response.php'; URL += '&state=xxxxxxx'; URL += '&scope=profile%20openid%20email'; window.location.href = URL; } </script>
我們需要另一個畫面,是用戶從LINE那邊登入成功後導回的頁面,假設是:response.php
簡易流程是這樣的:
//顯示警告訊息並導向 function js_go($msg="", $url="") { echo "<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">n"; echo "<script language=javascript>n"; if ($msg) echo "alert("".$msg."");n"; if ($url) echo "location.href='".$url."';n"; else echo "location.href='".$_SERVER['PHP_SELF']."';n"; echo "</script>n"; exit; } $code = $_GET['code']; if(!empty($code)){ $state = $_GET['state']; if($state!='xxxxxxx'){ js_go("error occured: state is wrong!", "https://www.xxxx.com.tw/); exit; } $service_url = 'https://api.line.me/oauth2/v2.1/token'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$service_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=authorization_code&code=$code&redirect_uri=https://www.xxxxx.com.tw/response.php&client_id=xxxxxx&client_secret=xxxxxxxxxxxxxx"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); // receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $decoded = json_decode($server_output); curl_close ($ch); if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') { js_go("error occured:".$decoded->response->errormessage, "https://www.xxxx.com.tw/); exit; } $decode_jwt = (json_decode(base64_decode(str_replace('_', '/', str_replace('-','+',explode('.', $decoded->id_token)[1]))))); $login_user_email = $decode_jwt->email; //取得登入用戶的電子郵件 $_SESSION['login_user_email'] = $login_user_email; //可先寫入session,之後可寫入會員資料庫... if(!empty($decoded->access_token)){ $url = "https://api.line.me/v2/profile"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $headers = array( "Accept: application/json", "Authorization: Bearer {$decoded->access_token}", ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //for debug only! curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($curl); $decoded2 = json_decode($resp); curl_close($curl); js_go("{$decoded2->displayName}您好,您已經登入!", "https://www.xxxx.com.tw"); exit; }else{ js_go("error occured:access_token gone!請再試一次!", "https://www.xxxxx.com.tw/); exit; } }else{ js_go("很遺憾您未能同意登入!請再試一次!", "https://www.xxxxx.com.tw/); exit; }
邀請您至LINE Bank開戶
開戶送LINE POINTS 300點,領了沒?前往LINE Bank開戶,綁定LINE與LINE Pay立即得!再享不限通路刷卡立即回饋3%起、行動銀行跨轉每月88次免手續費等優惠。
-> 開立口袋帳戶,享2.2%優惠利率
-> 刷卡筆筆3%
-> 綁LINE Pay刷卡3.5%
-> 指定通路週週首筆刷卡最高18.5%(限時限量)
用手機點選下面網址立即開戶,送您LINE POINTS 300點:
https://line.me/R/fin/bk/1612609319-qJbaOpWn/mgm-event/invitation?mgm=101000133257
或用手機掃描此QR CODE立即開戶,送您LINE POINTS 300點(用此QR CODE開戶才有喔 ^^):



用LINE分享給朋友:
這篇文章的QR CODE:(用手機掃我)
延伸閱讀:北部新冠快篩站預約與等候結果
延伸閱讀:疫情嚴重時少出門必備工具
延伸閱讀:口罩有縫隙! 美國CDC教你knot and tuck改良自己的口罩
延伸閱讀:居家工作 網路攝影機 幫忙看門/看小孩
延伸閱讀:「公費疫苗可選廠牌」哪種廠牌好? 要投保疫苗險嗎?
延伸閱讀:WFH在家工作 急需傳真不用跑便利商店
延伸閱讀:WFH在家工作時時關心疫情 – 小米盒子(追劇看新聞)
延伸閱讀:勞工紓困貸款 貸了有何影響?
延伸閱讀:打不到新冠肺炎(COVID-19)疫苗? 先打肺炎鏈球菌疫苗?
延伸閱讀:COVID-19新冠肺炎 居家快篩試劑,保護自己保護家人
延伸閱讀:必須在長輩手機上設定的 緊急聯絡人與緊急醫療資訊 (快樂缺氧怎麼辦?!)
延伸閱讀:打不到新冠肺炎(COVID-19)疫苗? 先打肺炎鏈球菌疫苗?
延伸閱讀:必須在長輩手機上設定的 緊急聯絡人與緊急醫療資訊 (快樂缺氧怎麼辦?!)
延伸閱讀:打了新冠肺炎(COVID-19)疫苗 副作用 (親身經歷)