PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

สร้าง album และ อัพโหลด รูป photo ขึ้น facebook ด้วย php sdk

09 October 2010 By


อ่านเนื้อหา ที่เกี่ยวข้องเบื้องต้น หากไม่ได้ติดตามตั้งแต่แรก ได้ที่
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
http://www.ninenik.com/การใช้_php_sdk_เรียกใช้งาน_graph_api_ใน_facebook_แบบระบุส่วนของข้อมูล-354.html
http://www.ninenik.com/การอัพเดท_สถานะบน_facebook_อัตโนมัติ_แบบ_graph_api_ด้วย_php_sdk-355.html

ตัวอย่าง การใช้ graph api ของ facebook ผ่าน php sdk สำหรับใช้ในการสร้าง albums รูปภาพ
และ อัพโหลดรูปภาพ ไปยังหน้า โพรไฟล์ user ในส่วนของ photo บน facebook

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

 

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

// สร้าง Application instance.
$facebook = new facebook(array(
  'appId'  => 'xxxxxxxxxxxxxx', // appid ที่ได้จาก facebook
  'secret' => 'xxxxxxxxxxxxxxxxxxx', // 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_sdk6.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_sdk6.php',
			'cancel_url'=>'http://www.ninenik.com/fb/facebook_use_sdk6.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 upload photo album</title>
<style type="text/css">
body{
	font-family:tahoma, "Microsoft Sans Serif", Verdana;
	font-size:12px;	
}
</style>
</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
// ส่วนของการสร้าง albums ใหม่
if($_POST['Submit2']){ 
	$args_album=array( // ค่าที่ส่งไปด้วย
		"name"=>$_POST['albumName'], // ชื่อ album ที่ต้องการกำหนด
		"message"=>$_POST['message'] // คำอธิบายเกี่ยวกับ album
	);	
	try{
		if($_POST['albumName']!=""){ // ตรวจสอบถ้ามีการกำหนดชื่อมา
			$facebook->api("/me/albums","post", $args_album);	// 	สร้าง album ใหม่
		}
	}catch (FacebookApiException $o) {
	//	  pre($o);
		error_log($o);
	}	
}
// ส่วนของการ อัพโหลดรูปภาพ
if($_POST['Submit']){
	if($_FILES['image']['name']!=""){ // เมื่อมีการเลือกรูปภาพเพื่ออัพโหลด
		$args = array(
			'message' =>$_POST['caption'], // คำอธิบายรูปภาพ
			'source'=>'@'.realpath($_FILES['image']['tmp_name']) // ไฟล์รูปภาพ
		); 
	}
	try{
		if($_FILES['image']['name']!=""){// // เมื่อมีการเลือกรูปภาพเพื่ออัพโหลด
			// ให้ทำการอัพโหลดรูปภาพไปยัง album ที่่เลือก
		    $facebook->api("/".$_POST['albumID']."/photos","post", $args);
		}
	}catch (FacebookApiException $o) {
	//	  pre($o);
		error_log($o);
	}
}
?>

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<?php
// ดึงข้อมูล id และ ชื่อ album ของเรามาเก็บไว้สร้างตัวเลือกใน select box
$testData=$facebook->api("/me/albums?fields=id,name");
//pre($testData);
?>

<table width="500" border="0" cellspacing="2" cellpadding="0">
  <tr>
    <td width="144" align="right">&nbsp;</td>
    <td width="356" align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="right">สร้างชื่อ alum ใหม่</td>
    <td align="left"><input name="albumName" type="text" id="albumName" size="40" /></td>
  </tr>
  <tr>
    <td align="right">คำอธิบาย album</td>
    <td align="left"><textarea name="message" id="message" cols="30" rows="3"></textarea></td>
  </tr>
  <tr>
    <td align="right">&nbsp;</td>
    <td align="left"><input type="submit" name="Submit2" id="Submit2" value="Submit" /></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><hr /></td>
    </tr>
  <tr>
    <td align="right">เลือก album ที่ต้องการอัพโหลดรูป</td>
    <td align="left">
<select name="albumID" id="albumID">
<?php 
if(count($testData['data'])>0){//  ตรวจสอบว่า มี album อยู่หรือไม่ 
	foreach($testData['data'] as $key=>$value){ // วนลูปแสดง 
?>
<option value="<?=$testData['data'][$key]['id']?>"><?=$testData['data'][$key]['name']?></option>
<?php
	}
}
?>
</select>    
    </td>
  </tr>
  <tr>
    <td align="right">เลือกไฟล์รูปภาพ</td>
    <td align="left"><input type="file" name="image" id="image" /></td>
  </tr>
  <tr>
    <td align="right">คำอธิบายรูปภาพ</td>
    <td align="left"><textarea name="caption" id="caption" cols="30" rows="3"></textarea></td>
  </tr>
  <tr>
    <td align="right">&nbsp;</td>
    <td align="left"><input type="submit" name="Submit" id="Submit" value="Submit" /></td>
  </tr>
</table>
</form>
</body>
</html>

วิธีการนี้เป็นแนวทาง สำหรับนำไปประยุกต์ใข้งาน

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


Tags:: สร้าง album php sdk อัพโหลด รูป facebook





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