การใช้งาน stream.publish ของ facebook Old REST API ด้วย php sdk
10 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
http://www.ninenik.com/การใช้_php_sdk_เรียกใช้งาน_graph_api_ใน_facebook_แบบระบุส่วนของข้อมูล-354.html
http://www.ninenik.com/การอัพเดท_สถานะบน_facebook_อัตโนมัติ_แบบ_graph_api_ด้วย_php_sdk-355.html
http://www.ninenik.com/สร้าง_album_และ_อัพโหลด_รูป_photo_ขึ้น_facebook_ด้วย_php_sdk-356.html
ตัวอย่างต่อไปนี้ จะไม่ได้อธิบายรายเอียดมากนัก ทดสอบและดูรายละเอียดได้จากโค้ดตัวอย่าง
<?php
session_start(); // กำหนดไว้ กรณีอาจได้ใช้ตัวแปร session
include("facebook.php"); // เรียกใช้งานไฟล์ php-sdk สำหรับ facebook
// สร้าง Application instance.
$facebook = new facebook(array(
'appId' => 'xxxxxxxxxxx', // appid ที่ได้จาก facebook
'secret' => 'xxxxxxxxxxxxxx', // 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_sdk8.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_sdk8.php',
'cancel_url'=>'http://www.ninenik.com/fb/facebook_use_sdk8.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>
</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']){
// http://developers.facebook.com/docs/reference/rest/stream.publish
// http://developers.facebook.com/docs/guides/attachments
$param = array(
"method" => "stream.publish",
"message" =>"แนะนำเว็บไซต์ www.ninenik.com",
"href"=>"http://www.ninenik.com/fb/facebook_use_sdk8.php?1",
"action_links"=>array(
array(
"text"=>"vote", // ใช้ได้เฉพาะภาษาอังกฤษ
"href"=>"http://www.ninenik.com/fb/facebook_use_sdk8.php?2"
)
),
"attachment" => array(
"name"=>"เว็บไซต์ www.ninenik.com ยินดีต้อนรับ",
"href"=>"http://www.ninenik.com/fb/facebook_use_sdk8.php?3",
"caption"=>"{*actor*} ได้ทำการแนะนำเว็บไซต์ www.ninenik.com ",
"description"=>"www.ninenik.com แนะนำวิธีการเขียนโปรแกรมบน ติดต่อกับ facebook",
// "comments_xid"=>urlencode("http://www.ninenik.com/"), // สร้าง xid สำหรับใช้กับ comment box
"properties"=>array( // ส่วนของการกำหนดข้อมูลเพิ่มเติม กำหนดได้มากกว่า 1 array
"หมวด php"=>array(
"text"=>"สอนเกี่ยวกับ php",
"href"=>"http://www.ninenik.com/article_cat-arti_cat-5.html"
),
"หมวด jQuery"=>array(
"text"=>"สอนเกี่ยวกับ jQuery",
"href"=>"http://www.ninenik.com/article_cat-arti_cat-10.html"
),
"หมวด อื่นๆ"=>"ยังไม่ระบุ"
),
"media"=>array( // ส่วนของการ attachment หรือแนบข้อมูลไปแสดง
array( // ในที่นี้แนบไฟล์ลิ้งค์รูปภาพ 2 รูป
"type"=>"image",
"src"=>"http://wallpaper.thaiware.com/thumbnails/2010_10/20733_9951_101008100641_9m.jpg",
"href"=>"http://wallpaper.thaiware.com/thumbnails/2010_10/20733_9951_101008100641_9m.jpg"
),
array(
"type"=>"image",
"src"=>"http://wallpaper.thaiware.com/thumbnails/2010_10/17115_7590_101007000643_Uh.jpg",
"href"=>"http://wallpaper.thaiware.com/thumbnails/2010_10/17115_7590_101007000643_Uh.jpg"
)
)
),
"target_id"=>"",
"uid" =>$uid,
"callback" => ""
);
try{
$statusUpdate = $facebook->api($param);
}catch (FacebookApiException $o) {
// pre($o);
error_log($o);
}
// pre($statusUpdate);
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="submit" name="Submit" id="Submit" value="ล็อกอินแล้วคลิก ที่นี้เพื่อทดสอบโพสข้อมูล ไปที่ โพรไฟล์ของคุณ" />
</form>
</body>
</html>
ภาพประกอบเมื่อทำการโพสข้อมูลแบบ stream.publish
สีเหลือง คือส่วน บรรทัดที่ 106
สีเขียว คือ ส่วนบรรทัดที่ 131-142 มี 2 รูป เมื่อคลิกที่คำว่า see more จะแสดงรูปทั้งหมด
สีฟ้า คือ ส่วนบรรทัดที่ 115-116
สีม่วง คือ ส่วนบรรทัดที่ 117
สีส้ม คือ ส่วนบรรทัดที่ 118
สีชมพู คือ ส่วนบรรทัดที่ 120-130
สีแดง คือ ส่วนบรรทัดที่ 108-113
ตัวอย่าง http://www.ninenik.com/fb/facebook_use_sdk8.php
ส่วนของเนื้อหาที่เกี่ยวข้อง อ่านเพิ่มเติมได้ที่
http://developers.facebook.com/docs/reference/rest/stream.publish
http://developers.facebook.com/docs/guides/attachments
บทความคนเข้าอ่านวันนี้
13 Oct 08 คำสั่ง SQL AND OR อ่าน 3448 15 Feb 09 สร้างเมนู Accordion อย่างง่ายแบบที่ 2 ด้วย jQuery อ่าน 5004 25 Sep 08 เลือกหรือไม่เลือก checkbox ทั้งหมด อ่าน 4331 09 Aug 10 ประยุกต์ jQuery UI ปฏิทิน Datepicker แสดงภาษาไทย และใช้ ปี พ.ศ. อ่าน 11919 17 Mar 09 สร้างฟังก์ชันลบเวลาด้วย php อย่างง่าย อ่าน 2527 29 Sep 10 แนวทาง การสร้าง ระบบตรวจสอบ การล็อกอิน อย่างง่าย ด้วย ajax ใน jQuery และ php อ่าน 5046 18 Mar 10 การเก็บข้อมูลวันที่ ในฐานข้อมูล กับคำสั่ง sql ในการค้นหา อ่าน 5880 25 Sep 08 การกำหนด selectors ด้วย jQuery แบบลำดับขั้น ตอนที่ 1 อ่าน 4087 14 Feb 09 คำนวณหาอายุ จากวันเกิด ด้วย php อ่าน 5794 22 Sep 10 ทบทวน การจัดการกับ ตัวแปร array ใน javascript ด้วย ฟังก์ชัน ตอนที่ 2 อ่าน 1723 26 Aug 10 ใช้ comments.get เรียกและ บันทึก facebook comment ล่าสุด ลงฐานข้อมูล ด้วย jQuery อ่าน 2806 25 Sep 08 การสร้างวันเวลาปัจจุบัน ด้วยฟังก์ชัน date() อ่าน 5980 31 Jul 10 javascript เรียกฟังก์ชัน ใน parent จาก iframe อ่าน 3374 04 May 10 ประยุกต์ ใช้งาน php และ ajax ใน jQuery แสดงผลลัพธ์ คล้าย twitter อ่าน 3819 11 Feb 11 แนะนำ การใช้งาน jQuery quicksearch plugin อ่าน 3861 23 Nov 08 สร้างเมนูแท็บ Tab menu ด้วย jQuery + CSS อย่างง่าย อ่าน 27468 29 Jul 10 สั่ง print preview ใน IE และ ประยุกต์กับ บราวเซอร์ อื่น อ่าน 4295 25 Sep 08 มารู้จัก effect ของ jquery อย่างง่าย ตอนที่ 1 อ่าน 6823 14 Feb 09 ข้อแตกต่างระหว่าง mysql_pconnect กับ mysql_connect อ่าน 3308 17 Feb 12 ประยุกต์ ใช้งาน jquery ui autocomplete ร่วมกับฐานข้อมูล อย่างง่าย อ่าน 3274
