ปัจจุบันการใช้งานเว็บไซต์ของคนในยุคสมัยนี้เปลี่ยนไป
การสมัครสมาชิกสำหรับเว็บไซต์ต่างๆ ที่เป็นแบบฟอร์ม Register มักไม่ค่อยมีให้เห็นแล้ว
เพราะคนส่วนใหญ่มี Facebook Account เป็นของตัวเอง
แค่เพียงคลิกครั้งเดียวก็สามารถเป็นสมาชิกของเว็บไซต์นั้นๆ ได้แล้ว
วันนี้ผมจะมาสอนวิธีการทำ "Login With Facebook" ในแบบฉบับของ Code-self ครับ
- ต้องสมัคร Application ของ Facebook ก่อน เพื่อเปิดทางให้สามารถใช้ API ต่างๆของ Facebook
โดยเข้าไปที่ https://www.facebook.com/developersกรอก App Name และ NamesSpace(ตามที่คุณต้องการ จากภาพเป็นแค่ตัวอย่าง)กรอกลิ้งเว็บไซด์ของคุณ(Facebook จะใช้ URL นี้ในการตรวจสอบว่าเราใช้ App นี้กับเว็บไซต์เราจริงหรือไม่)
- ดาวน์โหลด PHP SDK จาก https://developers.facebook.com/docs/reference/php
- ทำการเตรียมไฟล์ (โดยในที่นี้เป็นการวางไฟล์ในแบบของผมนะ)
โดย
- index.php เป็นไฟล์ที่จะมีกดปุ่ม "Login With Facebook"
- auth_fb.php เป็นไฟล์ที่จะรับค่าหลังจาก auth ที่ฝั่ง Facebook แล้ว - มาดูกันในส่วนของไฟล์ index.php
<? session_start(); // Facebook API require("class/facebook.php"); define("FB_APP_ID" , "362137xxxxxxxx"); // App ID ที่ได้จากการสร้าง App define("FB_APP_SECRET" , "c5191exxxxxxxxxxxxxxxxxxxxxxx"); // App Secret ที่ได้จากการสร้าง App $FB = new Facebook(array( 'appId' => FB_APP_ID, 'secret' => '9839c7a3304c352a511f2faa5059ce1b', )); $param['redirect_uri'] = "http://xxxxx.com/auth_fb.php"; // เมื่อ Login ผ่าน Facebook สำเร็จให้วิ่งกลับไป Link ดังกล่าว $param['scope'] = "email , publish_stream"; // คือ Permission ที่เราต้องการ เช่น publish_stream = อนุญาติให้โพสผ่านหน้า wall ได้ $param['popup'] = 1; // เพื่อให้ App ใน Facebook ขึ้นว่า Login With Facebook $FB_ME_INFO = NULL; $FB_LOGIN_URL = ""; $FB_LOGOUT_URL = ""; if (empty($_SESSION['LOGIN_FB_ID'])) { // Session นี้เราจะ Set ในไฟล์ auth_fb.php เมื่อทำการ Login สำเร็จ $FB_LOGIN_URL = $FB->getLoginUrl( $param ); } else { $FB_LOGOUT_URL = $FB->getLogoutUrl(); } define("FB_LOGIN_URL" , $FB_LOGIN_URL); define("FB_LOGOUT_URL" , $FB_LOGOUT_URL); if (empty($_SESSION['LOGIN_FB_ID'])) { echo '<a href="'.FB_LOGIN_URL.'">Login With Facebook</a>'; } else { echo "Hello , ".$_SESSION['LOGIN_FB_FULLNAME']; echo '<a href="'.FB_LOGIN_URL.'">Login</a>'; } ?>
- ต่อมาในส่วนของไฟล์ auth_fb.php เป็นส่วนของการ redirect หลังจากการที่ Login Facebook สำเร็จแล้ว ในตัวอย่างนี้จะทำการ Set Session แล้วก็กลับไปแสดงผลที่ index.php
<? session_start(); require("class/facebook.php"); define("FB_APP_ID" , "362137xxxxxxxx"); // App ID ที่ได้จากการสร้าง App define("FB_APP_SECRET" , "c5191exxxxxxxxxxxxxxxxxxxxxxx"); // App Secret ที่ได้จากการสร้าง App $FB = new Facebook(array( 'appId' => FB_APP_ID, 'secret' => '9839c7a3304c352a511f2faa5059ce1b', )); $user = NULL; $user = $FB->getUser(); // Get User if ($user) { // ตรวจสอบว่าสามารถ Login แล้ว Get ข้อมูลได้หรือไม่ try { $FB_ME_INFO = $FB->api('/me'); // เป็นการเรียก Method /me ซึ่งเป็นข้อมูลเกี่ยวกับผู้ใช้ท่านนั้นๆ ที่ได้ทำการ Login $_SESSION['LOGIN_FB_ID'] = $FB_ME_INFO["id"]; $_SESSION['LOGIN_FB_FULLNAME'] = $FB_ME_INFO["name"]; header("Location:./index.php"); } catch(FacebookApiException $e) { echo $e; // print Error //header("Location:./index.php?Login=fail"); } } else { header("Location:./index.php?Login=fail"); } ?>
เพียงเท่านี้ก็สามารถทำ Login ผ่าน Facebook ได้แล้วครับ
ทั้งนี้จากตัวอย่างเป็นการเขียนโค้ดเพื่อให้เห็นภาพแบบง่ายๆ
อันที่จริง ควรทำเป็นไฟล์ Include ในส่วนของ Object Facebook ไว้จะดีกว่าครับ
เพราะบางทีเรามีการเปลี่ยน App ID ก็จะได้ไปแก้ไขที่ไฟล์ Include แค่ไฟล์เดียวครับ