การใช้ php sdk เรียกใช้งาน graph api ใน facebook แบบระบุส่วนของข้อมูล

07 October 2010

อ่านเนื้อหาเริ่มต้น ได้ที่
http://www.ninenik.com/รู้จัก_และใช้งาน_php_sdk_สำหรับ_facebook_เพิ่มขึ้น-351.html
http://www.ninenik.com/สร้าง_login_logout_และกำหนด_permission_ของ_facebook_ด้วย_php_sdk_-352.html
http://www.ninenik.com/การใช้งาน_graph_api_ของ_facebook_ด้วย_php_sdk_-353.html


การระบุเฉพาะส่วนของข้อมูลที่ต้องการแสดง ในการใช้ graph api
ซึ่งโดยปกติ เมื่อเราเรียกใช้งาน เช่น
 

$testData=$facebook->api("/me");
pre($testData);

ก็จะแสดงข้อมูลทั้งหมดที่สามารถดู หรืออนุญาตให้แสดงได้ ตัวอย่าง
 

Array
(
    [id] => 1234998873
    [name] => Ninenik Narkdee
    [first_name] => Ninenik
    [last_name] => Narkdee
    [link] => http://www.facebook.com/ninenik
    [gender] => ชาย
    [timezone] => 7
    [locale] => en_US
    [verified] => 1
    [updated_time] => 2010-10-05T16:41:19+0000
)

จากตัวอย่าง ผลลัพธ์ เราสามารถ ที่จะระบุเฉพาะส่วนของ ข้อมูลที่ต้องการแสดง ได้ เช่น ต้องการแสดงเฉพาะ
id,name และก็ link (แต่ละ user อาจมีในส่วนอื่นๆ ไม่ครบ) เราสามารถกำหนดได้ โดยการส่งค่าคิวรี่ต่อท้าย ด้วยฟิลด์
ของข้อมูลที่ต้องการแสดง ในที่นี้คือ ?fields=id,name,link  ก็จะได้เป็น
 

$testDat=$facebook->api("/me?fields=id,name,link");
pre($testData);

ข้อมูลที่แสดงก็จะได้เป็น
 

Array
(
    [id] => 1234998873
    [name] => Ninenik Narkdee
    [link] => http://www.facebook.com/ninenik
)

การแสดงข้อมูลเบื้องต้น ของ  object ใน graph api พร้อมกันหลายค่า
ตัวอย่าง ต้องการแสดงข้อมูลเบื้องต้น
ของคุณ Bret Taylor และของผู้เขียน พร้อมกัน สามารถทำได้ดังนี้
 

$testData=$facebook->api("/?ids=me,btaylor");
pre($testData);

สามารถุกำหนดเป็นชื่อ หรือ id แทนได้เช่น
 

$testData=$facebook->api("/?ids=1234998873,220439");
pre($testData);

การใช้งานข้อมูลที่ส่งกลับ ต้องใช้งานเป็น array แบบมิติ ตัวอย่าง
ต้องการทราบ id ของคุณ Bret Taylor ก็ใช้เป็น
 

echo $testData['btaylor']['id'];

นอกจากนี้ยังสามารถกำหนดเป็น url เพื่อดู id object ของ graph api เข่น
 

$testData=$facebook->api("/?ids=http://www.ninenik.com");
pre($testData);

จะแสดงข้อมูล ของ url ขึ้นกับแต่ละกรณ๊ของ url ซึ่งกรณี www.ninenik.com จะแสดง id และจำนวนการ share
ของ url ใน facebook


การแสดงส่วนของ connections ทั้งหมดของ object รวมทั้งรายละเอียดชื่อฟิลด์ และคำอธิบาย ของ object เพื่อเป็น
ข้อมูลสำหรับทำความเข้าใจ หรือใช้งานต่อไป สามารถทำได้โดยการส่งค่าคิวรี่ต่อท้าย เป็น ?metadata=1 ตัวอย่าง
 

$testData=$facebook->api("/me?metadata=1");
pre($testData);

ตัวอย่างโค้ดสำหรับทดสอบ
 

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

// สร้าง Application instance.
$facebook = new facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxx', // appid ที่ได้จาก facebook
  'secret' => 'xxxxxxxxxxxxxxxxxxx', // app secret ที่ได้จาก facebook
  '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_sdk2.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_sdk2.php',
			'cancel_url'=>'http://www.ninenik.com/fb/facebook_use_sdk2.php',
			'req_perms'=>'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 use graph api more</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
//	$testData=$facebook->api("/me");
//	pre($testData);
//	$testData=$facebook->api("/me?fields=id,name,picture");
//	pre($testData);
//	$testData=$facebook->api("/?ids=me,btaylor");
//	pre($testData);
//	$testData=$facebook->api("/?ids=7901103,9074");
//	pre($testData);
//	$testData=$facebook->api("/?ids=http://www.ninenik.com");
//	pre($testData);
	$testData=$facebook->api("/me?metadata=1");
	pre($testData);

?>




</body>
</html>

ศึกษาข้อมูลเพิ่มเติม ด้วยตัวเอง ได้ที่ http://developers.facebook.com/docs/api

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








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

09 Jul 10 เพิ่มความเร็ว ให้กับการ cache ด้วย jquery ajax และ php cache class อ่าน 2824 25 Sep 08 หลักการเข้ารหัสด้วยฟังก์ชั่น md5 อ่าน 2805 23 Aug 10 Integrate ใช้ Filemanager ของ FCKeditor กับ CKEditor แทน CKFinder อ่าน 2778 25 Sep 08 Functions ลบไฟล์ อ่าน 2744 19 Nov 10 ทางเลือก อัพโหลดไฟล์ใน ckeditor ด้วย ajax file manager อ่าน 2709 10 Nov 08 สร้างฟังก์ชันเขียนไฟล์ด้วย PHP อ่าน 2699 25 Sep 08 PHP MySQL connecting script and function อ่าน 2666 09 May 10 ดึงค่า ข้อมูล จาก xml ไฟล์ มากำหนดเป็นตัวแปร array ด้วย php อ่าน 2654 25 Sep 08 เอาข้อมูลใน mysql ออกมาเป็น text ไฟล์ อ่าน 2630 03 Dec 10 ทบทวน การขึ้น บรรทัดใหม่ ใน textarea ด้วย Special Characters in HTML อ่าน 2604 25 Sep 08 ฟังก์ชันแปลงความกว้างความสูงของรูปภาพ หรือ สร้าง thumbnail อ่าน 2598 22 Jan 11 การอัพเดท สถานะ facebook อัตโนมัติ ผ่านทางอีเมลล์ อ่าน 2577 17 Mar 09 สร้างฟังก์ชันลบเวลาด้วย php อย่างง่าย อ่าน 2527 09 Nov 11 แนวทางการสร้างเมนูหลายภาษา อย่างง่ายด้วย php และ javascript อ่าน 2517 23 Nov 09 ทำการ cache หน้าเว็บไซต์ด้วย php class อย่างง่าย อ่าน 2491

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

25 Mar 09 ใช้งาน cookie ในการจำค่าชื่อผู้ใฃ้และรหัสผ่าน ด้วย javascript และ php อ่าน 3104 04 Dec 09 จัดการ Directory สร้าง ลบ เปลี่ยนชื่อ กำหนด permission ผ่าน FTP function ด้วย PHP อ่าน 1672 24 Sep 10 ประยุกต์ facebox ของ jQuery แทนการใช้ mootools facebox มาใช้งาน อ่าน 4101 16 Oct 08 CSS กับการตกแต่งกรอบรูปภาพ อ่าน 11441 03 Nov 08 การส่งข้อมูลแบบ POST ด้วย Ajax อ่าน 9714 04 Nov 08 สร้าง RSS บทความหรือข่าวสาร ด้วย PHP อ่าน 3675 09 Dec 09 การรวมไฟล์ javascript หรือไฟล์ css เป็นไฟล์เดียว ด้วย php อย่างง่าย อ่าน 2134 25 Sep 08 มารู้จัก effect ของ jquery อย่างง่าย ตอนที่ 1 อ่าน 6823 25 Sep 08 ตกแต่งภาพในเว็บให้น่าสนใจคล้ายภาพสะท้อนจากน้ำ อ่าน 2692 15 Feb 09 สร้างเมนู Accordion อย่างง่ายแบบที่ 2 ด้วย jQuery อ่าน 5004 25 Sep 08 ดึงข้อมูลจากฐานข้อมูลใส่ List Box อ่าน 6516 08 Dec 09 แปลง jQuery object เป็น DOM object อ่าน 2679 25 Sep 08 Code เกี่ยวกับ การหาวันข้างหน้า อ่าน 2144 27 Jun 11 ลูกเล่น เพิ่มช่องรับ input type file อัตโนมัติ ด้วย jQuery อ่าน 4210 24 Mar 09 Database ข้อมูลจังหวัดและอำเภอในประเทศไทย อ่าน 7507 13 Feb 09 แปลงข้อความเป็นตัวเล็ก toLowerCase ตัวใหญ่ toUpperCase ด้วย javascript อ่าน 2210 06 Jun 11 แนวทางการกำหนด expired header ให้กับรูปภาพ ด้วย php อย่างง่าย อ่าน 1223 19 Oct 08 คำสั่ง SQL functions อ่าน 4871 02 May 10 ใช้งาน ajax ใน jQuery ดึงข้อมูลจากฐานข้อมูลมาแสดง ใน tooltip อ่าน 7130 16 Dec 11 ใช้ jQuery กับ CSS สร้างเมนูย่อย แนวนอน รูปแบบคล้ายแท็บเมนู อ่าน 3479
จำนวนผู้เยี่ยมชม 892670
คน 2012 © Copyright ninenik.com. All rights reserved.