步驟1:登入 Line Developers 後台。
步驟2:點擊「Products」。
步驟3:點擊「 LINE Login」。
步驟4:點擊「開始體驗」。
步驟5:點選「Create a new provider」。
步驟6:輸入「Provider」名稱與選擇「Region」。
步驟7:填寫「Channel name」、「Channel description」內容與選擇「App types」。
步驟8:勾選「I have read and agress to the LINE Developers Agreement」與點擊「Create」
步驟9:點選「LINE Login」頁籤,這裡「Callback URL」需要一個 Https 的網址,由下面幾個步驟來建立。
步驟10:至 USBWebserver 官網下載輕量級網站伺服器軟體 USBWebserver,解壓縮 USBWebserver。
步驟11:至 ngrok 官網下載 ngrok,ngrok 是一個可以讓內網伺服器與外界溝通的服務,解壓縮 ngrok。
步驟12:啟動USBWebserver.exe,此時Apache已啟動,web 預設 port 為 8080。
步驟13:開啟「命令提示字元」切換到 ngrok 所在目錄,輸入「ngrok http 8080」,起動內網伺服器與外界溝通的服務。
此時就會產生一個 Https 的網址。
複製網址貼到 Chrome 瀏覽器的新分面上開啟測試,若成功開啟,表示 Https 網址已經串接完成。
步驟14:將 Https 網址填到 步驟9「LINE Login」頁籤的「Callback URL」。
步驟15: 建立 Line 授權,將以下 JavaScript 程式碼存成 linelogin.html,並到 Line Developers 後台的「Basic settings」頁籤將「Channel ID」、「Your user ID」與將 linelogin.html 與 Https 網址完整的串接在一起填入程式碼。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>LINE Login Demo</title> </head> <body> <button id="lineLoginBtn">LINE login</button> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js'></script> <script> var channel_id = "channel id"; var channel_secret = "channel secret"; var uri = "Https網址"; //var code = ""; $('#lineLoginBtn').on('click', function(e) { let client_id = channel_id; let redirect_uri = uri; let link = 'https://access.line.me/oauth2/v2.1/authorize?'; link += 'response_type=code'; link += '&client_id=' + client_id; link += '&redirect_uri=' + redirect_uri; link += '&state=login'; link += '&scope=openid%20profile%20email'; window.location.href = link; }); var url = new URL(window.location.href); var code = url.searchParams.get("code"); if(code != null) document.write('<br / > code : ' + code + '<br / >'); </script> </body> </html>
步驟16:在 Chrome 瀏覽器的新分面上開啟「Callback URL」。
步驟17:點擊「LINE login」按鈕,即可見到「LINE」登入畫面,點擊「登入」按鈕。
接著出現授權許可的畫面,點擊「許可」按鈕。
最後回到原本的網頁,在網址中的「code」就是我的要取得的內容。
步驟18:將以下程式碼再加入 linelogin.html,再執行一次登入授權,取回token。
var result = $(".result"); var id_token = ""; $.ajax({ method: "POST", dataType : 'json', url: "https://api.line.me/oauth2/v2.1/token", async : false, data: { grant_type : "authorization_code", code : code, redirect_uri : uri, client_id : channel_id, client_secret : channel_secret}, success: function(data) { id_token = data.id_token; } }); if(id_token.length != 0) document.write('<br / >id_token : ' + id_token + '<br / >');
步驟19:將以下程式碼再加入 linelogin.html,再執行一次登入授權,拿token呼API取得使用者的公開資料。
$.ajax({ method: "POST", dataType : 'json', url: "https://api.line.me/oauth2/v2.1/verify", async : false, data: { client_id : channel_id, id_token : id_token }, success: function(data) { document.write('<br / ><br / >' + JSON.stringify(data)); } });
將上面所有程式碼整合起來。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>LINE Login Demo</title> </head> <body> <button id="lineLoginBtn">LINE login</button> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js'></script> <script> var channel_id = "channel id"; var channel_secret = "channel secret"; var uri = "Https網址"; $('#lineLoginBtn').on('click', function(e) { let client_id = channel_id; let redirect_uri = uri; let link = 'https://access.line.me/oauth2/v2.1/authorize?'; link += 'response_type=code'; link += '&client_id=' + client_id; link += '&redirect_uri=' + redirect_uri; link += '&state=login'; link += '&scope=openid%20profile%20email'; window.location.href = link; }); var url = new URL(window.location.href); var code = url.searchParams.get("code"); if(code != null) document.write('<br / > code : ' + code + '<br / >'); var result = $(".result"); var id_token = ""; $.ajax({ method: "POST", dataType : 'json', url: "https://api.line.me/oauth2/v2.1/token", async : false, data: { grant_type : "authorization_code", code : code, redirect_uri : uri, client_id : channel_id, client_secret : channel_secret}, success: function(data) { id_token = data.id_token; } }); if(id_token.length != 0) document.write('<br / >id_token : ' + id_token + '<br / >'); $.ajax({ method: "POST", dataType : 'json', url: "https://api.line.me/oauth2/v2.1/verify", async : false, data: { client_id : channel_id, id_token : id_token }, success: function(data) { document.write('<br / ><br / >' + JSON.stringify(data)); } }); </script> </body> </html>
到了這裡就完成透過LINE Login的認證達成登入的操作。
沒有留言:
張貼留言