การอัพเดท สถานะบน facebook อัตโนมัติ แบบ graph api ด้วย php sdk

08 October 2010

เราสามารถใช้งาน php sdk อัพเดทข้อมูล สถานะบน facebook แบบ graph api โดยสามารถอัพเดทข้อมูล
ได้ทั้ง ในหน้า page, group, application หรือ หน้า profile ของผู้ใช้เอง รวมไปจนถึงในส่วนของผู้ใช้งาน ที่ใช้ application ของเราได้

ตัวอย่างโค้ดและคำอธิบายบางส่วนแสดงในตัวโค้ด
 

<?php
session_start(); // กำหนดไว้ กรณีอาจได้ใช้ตัวแปร session
include("facebook.php"); //  เรียกใช้งานไฟล์ php-sdk สำหรับ facebook

// สร้าง Application instance.
$facebook = new facebook(array(
  'appId'  => 'xxxxxxxxxx', // appid ที่ได้จาก facebook
  'secret' => 'xxxxxxxxxxxxxxxx', // app secret ที่ได้จาก facebook
  'fileUpload' => true, 
  'cookie' => true, // อนุญาตใช้งาน cookie
));
// appId และ secret ดูวิธีการได้มาจาก 
// http://www.ninenik.com/สร้าง_comment_ด้วย_social_plugins_ใน_facebook_api_อย่างง่ายดาย-291.html

// ตรวจสอบสถานะการ login
$session = $facebook->getSession();

// สร้างฟังก์ชันไว้สำหรัดทดสอบ การแสดงผลการใช้งาน
function pre($varUse){
	echo "<pre>";
	print_r($varUse);
	echo "</pre>";
}
// สร้างตัวแปรสำหรับเก็บข้อมูลของสมาชิกเมื่อได้ทำการ login แล้ว
$me = null; 

// ถ้ามีการ login ดึงข้อมูลสมาชิกที่ login มาเก็บที่ตัวแปร $me เป็น array
if($session){
	try{
		$uid = $facebook->getUser(); // เก็บ id ของผู้ใช้ไว้ที่ตัวแปร $uid กรณีมีการล็อกอิน facebook อยู่
		$me = $facebook->api('/me'); // ดึงข้อมูลผู้ใช้ปัจจุบันทีล็อกอิน facebook มาเก็บในตัวแปร $me
	}catch (FacebookApiException $e) { // กรณีเกิดข้อผิดพลากแสดงผลลัพธ์ข้อผิดพลาดที่เกิดขึ้น
		error_log($e);
	}
}
?>
<?php
////////////////////////////////////////////////////////////////////////////////
///       ส่วนของการใช้งาน
///////////////////////////////////////////////////////////////////////////////////
if(isset($_GET['logout'])){ // ทำการ logout อย่างสมบูรณ์
	$facebook->setSession(null); 	// ล่างค่า session ของ facebook
	header("Location:".$_SERVER['PHP_SELF']); //ลิ้งค์ไปหน้าที่ต้องการเมื่อ logout เรียบร้อยแล้ว
}
if($me){ // กรณีเงื่อน login อยู่
// เก็บค่า url ไว้ในตัวแปร $logoutUrl สำหรับ logout กรณีที่ได้ทำการ login อยู่
//	$logoutUrl = $facebook->getLogoutUrl(); // การกำหนดแบบปกติ
// การกำหนดแบบปกติ ค่า session ของ facebook ยังคงอยู่ แนะนำเป็นวิธีด้านล่าง

//   next คือ url ที่ต้องการลิ้งค์ไป เมื่อ logout แล้ว ในที่นี้กำหนด เป็น url ปัจจุบัน 
//   แต่เพิ่มตัวแปร get ชื่อ logout เพื่อกลับมาเข้าเงื่อนไข ทำลาย session ของ facebook
	$logoutUrl = $facebook->getLogoutUrl(
		array(
			'next'=>'http://www.ninenik.com/fb/facebook_use_sdk7.php?logout'
		)
	); 
  
}else{  // กรณีเงื่อนไข logout
// เก็บค่า url ไว้ในตัวแปร $loginUrl สำหรับ login กรณีที่ยังไม่ได้ login
//  $loginUrl = $facebook->getLoginUrl();  // กำหนด url กรณีใช้งานปกติ
 
//  กำหนด url สำหรับ login กรณีเพิ่มเติมพิเศษ
//  next: คือ url ที่้ต้องการใช้ลิ้งค์ไป เมื่อ login สำเร็จ
//  cancel_url: คือ url ที่้ต้องการใช้ลิ้งค์ไป เมื่อ ผู้ใช้ยกเลิกการ login
//  req_perms: กำหนด การร้องขอส่วนของ permission เพิ่มเติมที่ต้องการให้ผู้ใช้อนุญาต
//  ดูได้จาก http://developers.facebook.com/docs/authentication/permissions
//  display:  รูปแบบหน้า login ที่ต้องการแสดง ปกติค่าจะเป็น page ถ้าไม่ได้กำหนด 
//  จะเป็นหน้า เพจ login ของ facebook ปกติ
//  การกำหนดแบบ popup จะมีปุ่ม cancel ให้เลือก และใช้กับ cancel_url แนะนำให้ใช้เป็น popup
   $loginUrl = $facebook->getLoginUrl(
   		array(
			'next'=>'http://www.ninenik.com/fb/facebook_use_sdk7.php',
			'cancel_url'=>'http://www.ninenik.com/fb/facebook_use_sdk7.php',
			'req_perms'=>'publish_stream,offline_access,user_photos', // คั่นแต่ละค่าด้วย ,(comma)
			'display'=>'popup'	 // page หรือ popup		
		)
   );
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>facebook use php sdk post data via graph api</title>
</head>

<body>


<a href="<?=$_SERVER['PHP_SELF']?>">Reload</a>
<br />
<?php if($me){ ?>
<a href="<?=$logoutUrl?>">Facebook Logout</a>
<?php }else{ ?>
<a href="<?=$loginUrl?>">กรุณาล็อกอินเพื่อดูตัวอย่างผลลัพธ์ Facebook Login</a>
<?php } ?>

<?php
if($_POST['Submit']){
	// Arguments ทั้งหมดของ feed สำหรับข้อมูลที่จะไปแสดงใน wall
//	$args=array(
//		"message"=>$_POST['message'],
//		"picture"=>"http://www.ninenik.com/images/logo_01_Thu-night.gif",
//		"link"=>"http://www.ninenik.com",
//		"name"=>"test",
//		"caption"=>"http://www.ninenik.com",
//		"description"=>"test test",
//		"source"=>"http://www.ninenik.com/content.php?arti_id=354"
//	);
	
	// อัพเดทสถานะเฉพาะข้อความ
	$args=array(
		"message"=>$_POST['message']
	);	
	try{
		  $facebook->api("/me/feed","post",$args);
	}catch (FacebookApiException $o) {
		  pre($o);
	}
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <textarea name="message" id="message" cols="45" rows="5"></textarea>
  <br />
  <input type="submit" name="Submit" id="Submit" value="Submit" />
เมื่อพิมพ์ข้อความ แล้วกด submit ข้อความจะไปแสดงที่หน้า wall
</form>
</body>
</html>

ตัวอย่าง http://www.ninenik.com/fb/facebook_use_sdk7.php

รูปแบบการ post ค่าในส่วนอื่นๆ พร้อมกับ ค่า Arguments ดูแบบเต็มได้ที่
http://developers.facebook.com/docs/api#publishing

Method Description Arguments
/PROFILE_ID/feed write to the given profile's feed/wall message, picture, link, name, caption, description,source
/POST_ID/comments comment on the given post message
/POST_ID/likes like the given post none
/PROFILE_ID/notes write a note on the given profile message, subject
/PROFILE_ID/links write a link on the given profile link, message
/PROFILE_ID/events create an event name, start_time, end_time
/EVENT_ID/attending attend the given event none
/EVENT_ID/maybe maybe attend the given event none
/EVENT_ID/declined decline the given event none
/PROFILE_ID/albums create an album name, message
/ALBUM_ID/photos upload a photo to an album message
การ อัพเดทข้อมูล publish แบบ graph api จะไม่ครอบคลุมทั้งหมด เหมือนกับการใช้
การอัพเดทแบบเก่าที่ใช้ stream.publish ที่เรียกๆ กันว่า Old REST API ซึ่งจะได้นำมาอธิบายต่อไป
http://developers.facebook.com/docs/reference/rest/stream.publish

อย่างไรก็ตามหากต้องการเพียงแค่ อัพเดทข้อมูล เฉพาะข้อความแสดงสถานะ การใช้งานในส่วนนี้ก็เพียงพอ
 



การใช้งาน facebook sdk เวอร์ชั่นใหม่ จะมีการปรับชื่อการเรียกใช้ฟังก์ชัน แนะนำศึกษารายการที่อัพเดทการใช้งานได้ที่
http://www.ninenik.com/content.php?arti_id=423





บทความในหมวดที่่น่าสนใจ อื่นๆ PHP Learning

10 Nov 08 ฟังก์ชัน PHP ตัดข้อความยาวด้วย wordwrap อ่าน 4329 25 Sep 08 Authentication ป้องกันไฟล์ด้วย php อ่าน 4319 18 Mar 09 สร้างฟังก์ชัน PHP กำหนดเวลาหมดอายุให้ัตัวแปร SESSION อย่างง่าย อ่าน 4310 04 Oct 10 รู้จัก และใช้งาน php sdk สำหรับ facebook เพิ่มขึ้น อ่าน 4235 07 Sep 10 ใช้ ckeditor กับ filemanager ด้วย php รองรับ ฟังก์ชัน javascript อ่าน 4036 06 Sep 10 ประยุกต์ การ invite friends ใน facebook มาใช้งาน อ่าน 3996 26 Dec 10 แนะนำ PHP Simple HTML DOM Parser สำหรับ ดึงข้อมูล เฉพาะส่วนที่ต้องการ อ่าน 3910 25 Mar 11 สร้างรูปแบบ วันที่ คล้าย วันที่ใน facebook comment ด้วย php อย่างง่าย อ่าน 3747 04 Nov 08 สร้าง RSS บทความหรือข่าวสาร ด้วย PHP อ่าน 3675 28 Nov 09 เทคนิค php ค้นหาข้อมูล และ hilight กรณี keyword มากกว่า 1 ค่า อ่าน 3627 15 Feb 09 ดึงข่าว rss มาใช้ในเว็บเราได้อย่างง่ายดายด้วย php อ่าน 3615 13 Jul 10 วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย อ่าน 3603 03 Nov 08 เก็บ HTML ไว้ในตัวแปร PHP อย่างง่ายด้วยฟังก์ชัน ob_start() อ่าน 3386 07 Aug 10 ใช้ css แบ่งเนื้อหา เป็นคอลัมน์ พร้อมแบ่งหน้า ด้วย php อ่าน 3360 18 Sep 10 ดึงข้อมูล จากฐานข้อมูล สร้าง รายการเครือข่าย แบบ tree ด้วย php อ่าน 3331

บทความคนเข้าอ่านวันนี้

03 Aug 11 ใช้งาน google chart ตัวใหม่สร้าง poll อย่างง่าย อ่าน 2180 13 Oct 08 คำสั่ง SQL IN อ่าน 3414 20 Aug 09 jQuery ป้องกัน การคลิกขวา ในหน้าเว็บไซต์ อ่าน 3045 02 May 10 ใช้งาน ajax ใน jQuery ดึงข้อมูลจากฐานข้อมูลมาแสดง ใน tooltip อ่าน 7130 25 Sep 08 กรอกข้อมูลได้เฉพาะตัวเลข อ่าน 4165 06 Dec 11 การใช้งาน css จัดตำแหน่ง ซ้อนข้อความบนรูปภาพอย่างง่าย อ่าน 2799 10 Nov 08 ฟังก์ชัน PHP ตัดข้อความยาวด้วย wordwrap อ่าน 4329 23 Mar 11 เทคนิค หน่วงเวลา กับ event keyup ด้วย jQuery อ่าน 2535 06 Apr 10 ใช้ คุณสมบัติ css stylesheet สร้างตาราง อ่าน 5349 28 Oct 10 เริ่มต้นใช้งาน jquery ui autocomplete อย่างง่าย อ่าน 5498 20 Aug 10 การสร้าง popup ที่แตกต่าง ด้วยวิธี showModalDialog อ่าน 6032 02 Jun 10 การหา ขนาด ความกว้าง ความสูงของ รูปภาพ ด้วย javascript อ่าน 2551 05 Jul 09 สร้างฟังก์ชัน autocomplete ให้ใช้งานแบบง่าย ด้วย ajax อ่าน 15300 25 Sep 08 การแสดงข้อมูลจากตารางด้วย PHP อ่าน 6150 29 Oct 10 แนะนำ jQuery CountDown plugin สวยๆ สำหรับประยุกต์ใช้งาน อ่าน 3627 25 Sep 08 Code เกี่ยวกับ การหาวันข้างหน้า อ่าน 2144 24 Feb 09 สร้างรูปแบบข้อความ เบอร์โทร เลขที่บัตรประชาชน เวลา ด้วย javascript อ่าน 5324 26 Dec 10 แนะนำ PHP Simple HTML DOM Parser สำหรับ ดึงข้อมูล เฉพาะส่วนที่ต้องการ อ่าน 3910 14 Jan 10 รู้จัก property position ของ css ให้มากขึ้น ด้วย ตัวอย่าง และคำอธิบาย อ่าน 7663 29 Jul 10 สั่ง print preview ใน IE และ ประยุกต์กับ บราวเซอร์ อื่น อ่าน 4295
จำนวนผู้เยี่ยมชม 892666
คน 2012 © Copyright ninenik.com. All rights reserved.