
วิธีการเขียนโปรแกรมภาษา PHP ร่วมกับ Facebook SDK สำหรับเก็บข้อมูลทั่วไป และรวมข้อมูลแบบ JSON ยัดลงใน Field ตารางของ MySQL อย่างง่ายสำหรับผู้เริ่มต้น
ก่อนจะศึกษากรณีศึกษาจากบทความนี้ คุณต้องมี Skills เหล่านี้ก่อน
- การเขียนโปรแกรม PHP ระดับเริ่มต้นที่เข้าใจ Structure ประมาณหนึ่งแล้ว.
- เข้าใจคำสั่ง MySQL พวก SELECT, INSERT, DELETE ประมาณนั้น
- ศึกษาการใช้งาน Facebook SDK และ Graph API จากบทความเก่าๆ ที่นี่ http://www.daydev.com/category/developer/facebook-developer
ถ้าต้องการเข้าใจบทความนี้โดยไม่ผ่านการเรียนรู้ ผมขอไม่ตอบคำถามใดๆ ที่สอบถามผ่าน Facebook Fan Page ของผมนะครับ เพราะถือว่าปีนเกลียวความรู้ตัวเอง
ว่าแล้วก็มา เริ่มต้นกันสักหน่อย ก่อนอื่นให้เตรียมความพร้อมสร้าง ตาราง MySQL ที่เราต้องการจะเก็บข้อมูลจากการ Connect ผ่าน Facebook ครับ
ให้ Run ตัว MySQL ด้วยคำสั่ง SQL ต่อไปนี้
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE IF NOT EXISTS `fb_members` ( `member_id` int(10) NOT NULL auto_increment, `member_name` varchar(255) character set utf8 NOT NULL, `facebook_id` bigint(22) NOT NULL, `email` varchar(255) character set utf8 NOT NULL, `birthdate` varchar(100) character set utf8 NOT NULL, `gender` varchar(100) character set utf8 NOT NULL, `work` text character set utf8 NOT NULL, `joindate` datetime NOT NULL, PRIMARY KEY (`member_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1; |
ให้ไปดาวน์โหลด Facebook SDK สำหรับ PHP มาติดตั้งให้เรียบร้อยครับ ซึ่งเคยเขียนบอกวิธีการ ทำงานไว้ในบทความเก่าๆ แล้ว หลังจากนั้นไปสร้าง APP บน Facebook ของเราที่ http://developers.facebook.com ครับ เพื่อที่เราจะได้ APP ID และ APP SECRET พร้อมใส่ URL ให้เรียบร้อย
เพิ่ม Code ส่วนนี้ลงไป ใน index.php ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php error_reporting(0); require 'src/facebook.php'; //config $host_apps='122.155.1.38'; $host_user='lhhqeth123_lhhqe'; $host_pass='kqlsq'; $host_database='lhhqeth123_lhhqe'; $redirectURI='https://apps.facebook.com/epsonpuzzle/'; $facebook_app_page='131768060241852'; $facebook = new Facebook(array( 'appId' => '161672207369575', 'secret' => 'f9afc7c7911a52e35ff8e446d8d7cbfd', 'cookie' => true )); $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); $access_token = $facebook->getAccessToken(); } catch (FacebookApiException $e) { error_log($e); $user = null; } } // Login if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl( array( 'scope'=> 'read_stream,publish_stream, publish_actions,user_birthday, email,user_work_history,user_location, user_likes,user_photos,photo_upload', 'redirect_uri' => $redirectURI ) ); } ?> |
ในส่วนของการเข้าระบบ if($user) ให้เพิ่ม Code ต่อไปนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//Profiles $member_name=$user_profile['name']; $facebook_id=$user_profile['id']; $email=$user_profile['email']; $birthdate=$user_profile['birthday']; $gender=$user_profile['gender']; //Check Members mysql_connect($host_apps,$host_user,$host_pass); mysql_select_db($host_database); $strSQL = "SELECT facebook_id FROM fb_members WHERE facebook_id = '".$facebook_id."'"; $objQuery = mysql_query($strSQL); $objResult = mysql_fetch_array($objQuery); if($objResult){ }else{ $workresult = $facebook->api('/me?fields=work&limit=1'); if($workresult && $workresult['work']){ foreach($workresult['work'] as $works){ $company_desc = $works['description']; $company = $works['employer']['name']; $position = $works['position']['name']; $work_str[]= array( 'position'=> $position, 'company'=> $company, 'description'=>$company_desc ); } } |
เพื่อตรวจสอบว่า User และ Id ที่เพิ่มเข้าไปมีค่าซ้ำในตารางหรือไม่ ถ้าไม่มีค่าซ้ำก็ใส่ code ส่วนนี้ลงไปครับ
1 2 3 4 5 6 7 8 9 |
$objConnect = mysql_connect($host_apps,$host_user,$host_pass) or die("Error Connect to Database"); mysql_query("SET NAMES UTF8",$objConnect); $objDB = mysql_select_db($host_database); $strSQL = "INSERT INTO fb_members "; $strSQL .="(member_name,facebook_id,email,birthdate,gender,work,joindate) "; $strSQL .="VALUES "; $strSQL .="('".$member_name."','".$facebook_id."','".$email."' "; $strSQL .=",'".$birthdate."','".$gender."','".json_encode($work_str)."',NOW()) "; $objQuery = mysql_query($strSQL); |
ส่วนของ Work Histrory ในตัวอย่างนี้ผมจะดึงค่าเป็น JSON ทั้งก้อนแล้ว ยัดเก็บลงใน Field ที่ชื่อ “work” เลยครับ
ลองทดสอบ ตัวอย่างดู ทำการ Allow ข้อมูลของ Application บน Facebook แล้วไปตรวจสอบข้อมุลใน MySQL จะเห็นว่า ข้อมูลถูกเก็บลงอย่างเรียบร้อย
หวังว่าจะได้ประโยชน์นำไปใช้กับ โปรเจ็คของพวกคุณกันนะครับ