วันเสาร์ที่ 18 สิงหาคม พ.ศ. 2561

ทำระบบ Login เข้าใช้งานเว็บไซต์ด้วย Facebook Login


          ปัจจุบันนี้ เวลาจะ Login เข้าใช้งานเว็บไซต์ดัง ๆ ที่มีผู้ใช้งานเป็นจำนวนมากหรือแม้กระทั่งแอปพลิเคชั่นในโทรศัพท์มือถือ เพื่อน ๆ ก็มักจะเห็นปุ่ม Login with Facebook อยู่ในหน้าเข้าสู่ระบบกันใช่มั๊ยล่ะ ซึ่งก็ไม่น่าแปลกใจอะไร เพราะยิ่งเทคโนโลยีก้าวหน้าไปเท่าไร ทำให้เกิดสิ่งอำนวยความสะดวกให้ผู้คนมากขึ้นเท่านั้น และนั่นก็ส่งผลให้คนเรารักความสะดวกสบายและต้องการการตอบสนองที่รวดเร็วทันใจ

          สำหรับคนที่ชอบท่องไปในโลกอินเทอร์เน็ต การลืม username และ password ที่ใช้ในการเข้าสู่ระบบของแต่ละเว็บถือก็เป็นเรื่องปกติ (ยิ่งมีหลายรหัสผ่านก็ยิ่งชิxหาย ผมเองก็ยังลืมอยู่บ่อย ๆ ฮา) ประกอบกับ Facebook เป็นโซเชียลเว็บไซต์ขนาดใหญ่ที่มีผู้ใช้งานเป็นจำนวนมาก ดังนั้นการผนวกระบบ Login ของ Facebook เข้ามาใช้งานในเว็บไซต์จึงถือเป็นการอำนวยความสะดวกให้กับผู้ใช้งานเว็บไซต์นั้น ๆ ให้สามารถเข้าใช้งานได้ง่ายขึ้น ตอบสนองความขี้เกียจ เอ๊ย ความสะดวกสบายโดยลดเวลาในการกรอกข้อมูลตอนสมัครสมาชิก ทำให้ผู้ใช้งานไม่จำเป็นต้องมานั่งจำ username และ password

          หลังจากเกริ่นกันมาซะยาว เรามาเริ่มทำระบบ Login ของเว็บไซต์ด้วย Facebook Login กันเลยดีกว่า ซึ่งแน่นอนว่าเราต้องมี account ของ Facebook ก่อน จากนั้นก็ไปตั้งค่าการใช้งาน Facebook API ในหน้า Developer


          เข้าไปที่ URL https://developers.facebook.com/ จากนั้นให้คลิก Get Started ที่มุมขวาบนของเว็บ


          สำหรับผู้ที่ยังไม่มี Developers account ระบบก็จะแสดงหน้าขั้นตอนการสมัคร Facebook for Developers account ขึ้นมาก่อน อย่ารอช้า รีบทำการสมัครตามขั้นตอนไปเลย ส่วนผู้ที่สมัคร Developers account ไว้แล้วก็ให้ Login เข้าสู่ระบบ


          เมื่อ Login เข้ามาแล้วเมนูที่มุมขวาจะเปลี่ยนเป็นเมนู My Apps ให้คลิกเบา ๆ แล้วเลือกที่ Add a New App


          จะมีกล่องสำหรับสร้าง ID ของแอปพลิเคชันใหม่ปรากฏขึ้นมา ให้เราทำการกรอกชื่อเรียกสำหรับแอปพลิเคชันที่ต้องการสร้าง และกรอก E-mail ที่ใช้ในการติดต่อ หลังจากนั้นให้คลิกปุ่ม Create App ID


          หลังจากที่แอปพลิเคชันใหม่ถูกสร้างแล้ว อันดับแรกให้ไปตั้งค่าแอปพลิเคชันกันก่อน คลิกที่เมนู Setting > Basic


          ในหน้านี้มีข้อมูลสำคัญอยู่ 1 ค่าที่จะต้องนำไปใช้ในส่วนต่อไปของบทความนี้ ได้แก่ App ID ให้กรอกข้อมูลเพิ่มลงไปในช่องดังต่อไปนี้
  • App Domains: URL ของเว็บไซต์ (กรณีที่เทสบน localhost ให้เว้นช่องนี้ไว้)
  • Privacy Policy URL: URL นโยบายความเป็นส่วนตัว (สามารถสร้างนโยบายความเป็นส่วนตัวได้ที่เว็บ https://app-privacy-policy-generator.firebaseapp.com/)
  • Category: หมวดหมู่ของแอปพลิเคชัน

          จากนั้นให้เลื่อนลงมาข้างล่างแล้วคลิกปุ่ม + Add Platform


          จะมีหน้าต่างให้เลือกแพลตฟอร์มปรากฏขึ้นมา ให้เราเลือก Website


          จากนั้นให้กรอก URL ของเว็บไซต์ในช่อง Site URL (กรณีที่เทสบน localhost ให้ใส่เป็น https://localhost/) แล้วคลิกปุ่ม Save Changes จากนั้นให้คลิกเมนู Dashboard ที่อยู่ในแถบเมนูด้านซ้าย


          เมื่อเข้าสู่หน้า Dashboard แล้ว ให้เลื่อนลงมาล่าง ๆ จะเจอในส่วนของ Add a Product จากนั้นก็คลิกปุ่ม Set Up ของ Facebook Login


          ให้คลิกเลือกแพลตฟอร์มเป็น Web


          พิมพ์ URL ของเว็บไซต์ในช่อง Site URL จากก็คลิกปุ่ม Save และปุ่ม Continue ตามลำดับ


          ขั้นตอนถัดไปให้สร้างไฟล์ Html แล้ว Copy Code มาใส่ไว้ใต้ <body> โดยแก้ไข {your-app-id} เป็นค่า App ID และแก้ไข {api-version} เป็นเลขเวอร์ชันปัจจุบันของ Facebook SDK (ซึ่ง ณ วันที่เขียนนี้ Facebook SDK เป็นเวอร์ชัน 3.1) จะได้โค้ดประมาณนี้

<!DOCTYPE html>
<html>
 <head>
  <title>Facebook Login</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="description" content="Facebook Login">
     <meta name="author" content="AiNoTsubasa">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style type="text/css"></style>
 </head>
 <body>

  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : '{your-app-id}',
        cookie     : true,
        xfbml      : true,
        version    : 'v3.1'
      });
        
      FB.AppEvents.logPageView();   
        
    };

    (function(d, s, id){
       var js, fjs = d.getElementsByTagName(s)[0];
       if (d.getElementById(id)) {return;}
       js = d.createElement(s); js.id = id;
       js.src = "https://connect.facebook.net/en_US/sdk.js";
       fjs.parentNode.insertBefore(js, fjs);
     }(document, 'script', 'facebook-jssdk'));
  </script>


 </body>
</html>
          โค้ดในส่วนนี้จะเป็นการเพิ่ม Facebook SDK เข้ามาในหน้าเว็บไซต์ ถัดไปจะเป็นการใส่ปุ่มเพื่อ Login ให้เพิ่มโค้ดดังต่อไปนี้ไว้ข้างล่าง </script>

<button onclick="checkFbLoginState();">Login with Facebook</button>
          พอเพิ่มปุ่มลงไปแล้วก็ให้ทำการสร้างฟังก์ชัน checkFbLoginState() ขึ้นมา โดยใส่โค้ดดังต่อไปนี้ไว้ก่อน </script>

var fbLoginStatus = false;
function checkFbLoginState() {
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
}

function statusChangeCallback(response) {
  if(fbLoginStatus == false) {  
    if (response.status == 'connected') {
      fbLoginStatus = true;
      getCurrentUserInfo(response);
    } else {
      FB.login(function(response) {
        if (response.authResponse){
          fbLoginStatus = true;
          getCurrentUserInfo(response);
        } else {
          console.log('Auth failed.');
        }
      }, {scope: 'public_profile,email'});
    }
  } else if(fbLoginStatus == true) {
    getCurrentUserInfo(response);
  }   
}

function getCurrentUserInfo() {   
  FB.api('/me?fields=name,email,first_name,last_name,id', function(userInfo) {
    var result = '';
    result+= "ID: "+userInfo.id+"\r";
    result+= "First Name: "+userInfo.first_name+"\r";
    result+= "Last Name: "+userInfo.last_name+"\r";
    result+= "E-mail: "+userInfo.email+"\r";
    document.getElementById("result").text = result;
  });   
}
          ฟังก์ชัน checkFbLoginState() จะทำการเรียกใช้งานฟังก์ชัน FB.getLoginStatus() ซึ่งเป็นฟังก์ชันที่มาจาก Facebook SDK โดยจะทำการเช็คว่าผู้ใช้งานได้ Login แล้วหรือยัง ถ้ายังก็จะเรียกใช้งานฟังก์ชัน FB.login() แล้วจึงเรียกใช้งานฟังก์ชัน getCurrentUserInfo() ต่อไปเพื่อดึงข้อมูลของผู้ใช้งานออกมาแสดง ถัดไปก็ให้เราใส่โค้ดสำหรับแสดงผลการ Login ไว้ข้างล่างปุ่มกด

<br>
Result: <textarea id="result"></textarea>
          พอทำถึงขั้นตอนนี้ หน้าเว็บจำลองของเราก็พร้อมจะทำงานแล้ว ถัดไปให้ไป public แอปพลิเคชันที่เราได้สร้างเมื่อสักครู่ โดยกลับไปยังหน้า Developers Console แล้วคลิกที่เมนู App Review ที่อยู่ตรงแถบเมนูด้านซ้าย


          คลิกในส่วน Make Tester App public? เพื่อเปิดการใช้งานแอปพลิเคชัน แล้วคลิก Confirm ..... เอาล่ะ เรามาทดสอบโค้ดที่เขียนกันเลยดีกว่า


          เรียกใช้งานไฟล์เว็บที่เพิ่งสร้างเมื่อสักครู่ จะได้หน้าตาว่าง ๆ ประมาณนี้ จากนั้นก็คลิกปุ่ม Login with Facebook โล้ด


          เมื่อคลิกปุ่ม Login with Facebook เรียบร้อยแล้วก็จะมีหน้าต่างปรากฏขึ้นมาขอสิทธิ์การเข้าถึงข้อมูล ก่อนจะคลิกปุ่มก็ขอแนะนำว่าให้อ่านดูสักนิดว่าแอปพลิเคชันขอสิทธิ์การเข้าถึงอะไรของเราบ้าง (ตรงที่ขีดเส้นใต้ไว้) ไม่งั้นอาจจะซวยทีหลังได้นาจา ให้เราคลิกปุ่ม Continue as ...


          เรียบร้อย! ข้อมูลเราถูกแอปพลิเคชันเอาไปแล้วจ้า รออะไรอยู่ล่ะ ตบมือ 👏 ฮะฮะ

          บทความนี้เป็นตัวอย่างการนำ Facebook Login มาใช้งานในเว็บไซต์ของเรา ซึ่งจะช่วยเพิ่มความสะดวกสบายให้กับผู้ใช้งานเว็บไซต์ นอกจากนี้เรายังสามารถเข้าถึงข้อมูลของผู้ใช้งาน Facebook และนำไปเก็บไว้ในฐานข้อมูลได้อีกด้วย

ไฟล์โค้ด: AiNoTsubasa's Github


Share:

4 ความคิดเห็น: