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

เขียนเมื่อ 12 ปีก่อน โดย Ninenik Narkdee
อัพเดท status php sdk graph api facebook

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ อัพเดท status php sdk graph api facebook





เราสามารถใช้งาน 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

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



กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ











URL สำหรับอ้างอิง











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ