DeveloperFacebook DeveloperFeaturedLife StylePHPProgramming LanguageSocial Media MarketingSQL

Facebook PHP SDK เก็บข้อมูลแบบ JSON ลง MySQL

วิธีการเขียนโปรแกรมภาษา PHP ร่วมกับ Facebook SDK สำหรับเก็บข้อมูลทั่วไป และรวมข้อมูลแบบ JSON ยัดลงใน Field ตารางของ MySQL อย่างง่ายสำหรับผู้เริ่มต้น

Screen Shot 2556-10-08 at 10.30.53 AM

ก่อนจะศึกษากรณีศึกษาจากบทความนี้ คุณต้องมี Skills เหล่านี้ก่อน

  •  การเขียนโปรแกรม PHP ระดับเริ่มต้นที่เข้าใจ Structure ประมาณหนึ่งแล้ว.
  • เข้าใจคำสั่ง MySQL พวก SELECT, INSERT, DELETE ประมาณนั้น
  • ศึกษาการใช้งาน Facebook SDK และ Graph API จากบทความเก่าๆ ที่นี่ https://www.daydev.com/category/developer/facebook-developer

ถ้าต้องการเข้าใจบทความนี้โดยไม่ผ่านการเรียนรู้ ผมขอไม่ตอบคำถามใดๆ ที่สอบถามผ่าน Facebook Fan Page ของผมนะครับ เพราะถือว่าปีนเกลียวความรู้ตัวเอง

ว่าแล้วก็มา เริ่มต้นกันสักหน่อย ก่อนอื่นให้เตรียมความพร้อมสร้าง ตาราง MySQL ที่เราต้องการจะเก็บข้อมูลจากการ Connect ผ่าน Facebook ครับ

ให้ Run ตัว MySQL ด้วยคำสั่ง SQL ต่อไปนี้

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 ครับ

 '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 ต่อไปนี้

//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 ส่วนนี้ลงไปครับ

$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 จะเห็นว่า ข้อมูลถูกเก็บลงอย่างเรียบร้อย

Screen Shot 2556-10-08 at 10.53.19 AM
หวังว่าจะได้ประโยชน์นำไปใช้กับ โปรเจ็คของพวกคุณกันนะครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน