ใช้ comments.get เรียกและ บันทึก facebook comment ล่าสุด ลงฐานข้อมูล ด้วย jQuery
26 August 2010เนื้อหาต่อเนื่อง จากหัวข้อ
http://www.ninenik.com/สร้าง_comment_ด้วย_social_plugins_ใน_facebook_api_อย่างง่ายดาย-291.html
หากใคร ต้องการเพิ่มขีดความสามารถของ facebook comment สามารถศึกษารายละเอียด ตามคำแนะนำต่อไปนี้
เหตุผล หรือความต้องการ เช่น
- ต้องการ บันทึกรายการ comment ลงในฐานข้อมูล เพื่อนำมาเรียกใช้ในภายหลัง
- ต้องการนำไปประยุกต์ใช้ ว่าเนื้อหา หรือบทความใด มีการอัพเดทรายการ comment ใหม่บ้าง
- ต้องการแสดงรายการ comment ใน style หรือรูปแบบ ที่กำหนดเอง
- อื่นๆ..
ข้อมูลที่ได้รับเมื่อทำการ post ข้อความใน comment
"xid": "7ef517e0c77703c01b1897051da438ca", เป็นค่าเดียวกันกับตอนการส่งค่า ด้วยวิธี comments.get "fromid": 1234998873, // id ของ facebook ของคนที่โพส สามารถนำไปใช้เพื่อดูรูปภาพ หรือข้อมูลบางส่วนได้ "time": 1282803813, // เวลา เป็น timestamp สามารถแปลงเป็นข้อความวันที่ ด้วย php "text": "ข้อความที่โพส", // ข้อความที่ได้ทำการโพสไป "id": 561987, // id ที่ไม่ซ้ำกัน สำหรับอ้างอิงของแต่ละ xid นั้นๆ "username": "", // ชื่อผู้ใช้มีค่ากรณีให้บุคคลทั่วไป สามารถโพสได้ แต่ถ้าเป็นสมาชิก facebook จะเป็นค่าว่าง // ข้อมูลด้านล่าง ใช้หรือไม่ใช้งานก็ได้ จะเป็นส่วนที่ใช้ร่วมกับ facebook ในหน้า wall กรณีตอนโพสให้ส่งค่าไปที่ wall // หรือหน้าข้อมูลส่วนตัวของสมาชิกใน facebook "reply_xid": "", // xid ของรายการที่ตอบใน wall หน้าข้อมูลส่วนตัวของสมาชิกใน facebook "post_id": "", // id ที่แสดงใน wall หน้าข้อมูลส่วนตัวของสมาชิกใน facebook "app_id": 134358299911812, // application id ของ facebook ที่ใช้งานอยู่ "object_id": "" }, // object id อ้างอิง ของ facebook
เริ่มต้นการใช้งาน
1. การใช้งานส่วนเพิ่มเติมนี้ จำเป็นต้องกำหนด xid ให้กับแท็ก fb:comments เสมอ โดยใช้วิธีการเข้ารหัส url ของหน้าที่แสดง comments นั้นๆ
โดยมีวิธีการกำหนด ดังนี้
xid="<?=md5("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>" (แค่รูปแบบ ให้อ่านข้อต่อไปได้เลย)
2. สร้าง input type hidden สำหรับเก็บค่า xid ดังนี้
<input name="fb_xid" type="hidden" id="fb_xid" value="<?=md5("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>" />
3. เพิ่ม attribute ชื่อ notify="true" เข้าไปในแท็ก fb:comments
4. จะได้รูปแบบ แท็ก fb:comments พร้อมใช้งานดังนี้
<input name="fb_xid" type="hidden" id="fb_xid" value="<?=md5("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>" />
<fb:comments xid="<?=md5("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>"
notify="true" numposts="10" simple="true" width="400" publish_feed="true"></fb:comments>
<div id="fb-root"></div>
สามารถกำหนด xid ไว้ในตัวแปร php สำหรับใช้งานแทนได้ เช่น
<?php $pageXID=md5("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); ?>
<input name="fb_xid" type="hidden" id="fb_xid" value="<?=$pageXID?>" />
<fb:comments xid="<?=$pageXID?>" notify="true" numposts="10" simple="true"
width="400" publish_feed="true"></fb:comments>
<div id="fb-root"></div>
5. ส่วนของ Javascript กำหนดดังนี้
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId:'123456', // กำหนด app id ตรงส่วนนี้
status: true,
cookie: true,
xfbml: true
});
FB.Event.subscribe('comments.add', function (resp) { // Event เมื่อมีการโพสข้อความ
FB.api(
{
method: 'comments.get', // เรียกใช้ method comments.get เพื่อดึงข้อมูล โดยส่ง xid ไป
xid: $("#fb_xid").val()
},
function(response) {
// สร้างตัวแปร fb_commentData ไว้รับค่า ข้อมูล สำหรับนำไปบันทึก
// สามารถเพิ่มตัวแปร เพิ่มเติม โดยกำหนด ต่อท้าย เช่น
// object_id:response[0].object_id,
// myvar:10
var fb_commentData={
xid:response[0].xid,
fromid:response[0].fromid,
time:response[0].time,
text:response[0].text,
id:response[0].id,
username:response[0].username,
reply_xid:response[0].reply_xid,
post_id:response[0].post_id,
app_id:response[0].app_id,
object_id:response[0].object_id
};
// ส่งค่าข้อมูลไปใช้งาน เช่นบันทึกลงฐานข้อมูลด้วย ajax ในที่นี้ส่งเป้นตัวแปร post
// ค่าที่รับจะเป็น $_POST['xid'] $_POST['text'] เป็นต้น
$.post("save_comment.php",fb_commentData,function(returnData){
// คำสั่งเมื่อบันทึกข้อมูลเรียบร้อยแล้ว
});
}
);
});
};
(function() {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
6. ส่วนของไฟล์ สำหรับบันทึกข้อมูล หรือรับค่าจากตัวแปร POST ตามข้อ 5 ชื่อ save_comment.php
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// สร้างส่วนติดต่อฐานข้อมูล
// คำส่ง php ตามต้องการ
// ข้อมูลตัวแปรที่ส่งมาจะเป้น $_POST['ชื่อตัวแปร'] เช่น
// $_POST['text'] คือข้อความที่โพส เป็นต้น
?>
* จากตัวอย่างโค้ดข้าง ต้นมีรูปแบบ การใช้งาน คำสั่งที่สามารถนำไปประยุกต์ใช้งานได้มากมาย เช่น FB.api หรือ Event.subscribe เป็นต้น..
หมายเหตุ การใช้ โฟลเดอร์ คำว่า facebook ในเว็บไซต์ เมื่อมีการเรียกใช้ facebook api จะมี popup แจ้งเตือน ปัจจุบัน มีใน IE แล้ว จึงควรหลักเลี่ยง
การใช้ชื่อ facebook ใน path url เช่น www.example.com/facebook/comment_facebook.php ใช้เป็นชื่ออื่นแทน เช่น www.example.com/fb/comment_facebook.php ส่วนในชื่อไฟล์ สามารถใช้งานได้ เช่น comment_facebook.php
บทความคนเข้าอ่านวันนี้
19 Jun 10 สร้าง comment ด้วย social plugins ใน facebook api อย่างง่ายดาย อ่าน 17299 25 Sep 08 ฟังก์ชั่นเกี่ยวกับ วันที่ เวลา ใน javascript อ่าน 7137 02 May 10 ใช้งาน ajax ใน jQuery ดึงข้อมูลจากฐานข้อมูลมาแสดง ใน tooltip อ่าน 5973 08 Oct 10 การอัพเดท สถานะบน facebook อัตโนมัติ แบบ graph api ด้วย php sdk อ่าน 3534 15 Nov 09 สร้างลิ้งค์เมนู 2 ภาษา กรณี ไทย อังกฤษ ด้วย php อย่างง่าย อ่าน 1864 16 Aug 10 เทคนิค ใช้ event beforeunload แจ้งเตือนก่อน ปิดบราวเซอร์ ด้วย jQuery อ่าน 1614 04 Oct 10 รู้จัก และใช้งาน php sdk สำหรับ facebook เพิ่มขึ้น อ่าน 2856 15 Sep 10 สร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวนมาก จาก xml ไฟล์ อ่าน 3726 19 Jul 10 การนำ ระบบสมาชิก ของ facebook มาประยุกต์ใช้ อ่าน 5416 08 Dec 09 แปลง jQuery object เป็น DOM object อ่าน 2476 17 Sep 10 กำหนด infowindow ให้กับตัว marker จำนวนมาก ใน google map อ่าน 2932 06 Oct 10 การใช้งาน graph api ของ facebook ด้วย php sdk อ่าน 3703 24 Feb 09 สร้างรูปแบบข้อความ เบอร์โทร เลขที่บัตรประชาชน เวลา ด้วย javascript อ่าน 4624 12 Sep 10 การดึง attribute และค่าต่างๆ จาก xml ไฟล์ด้วย jQuery อย่างง่าย อ่าน 2426 18 Mar 09 เพิ่มลดขนาดตัวอักษรในหน้าเว็บแบบง่ายด้วย jQuery อ่าน 3131 11 Jan 12 รู้จัก และใช้งาน DATEDIFF() ใน mysql ฟังก์ชัน เทียบช่วงเวลาที่เหลือ อ่าน 414 02 Jun 10 การหา ขนาด ความกว้าง ความสูงของ รูปภาพ ด้วย javascript อ่าน 2168 02 Apr 09 สร้างรายการตัวเลือกให้กับ input text ด้วย jQuery อย่างง่าย อ่าน 4089 26 Aug 10 ใช้ comments.get เรียกและ บันทึก facebook comment ล่าสุด ลงฐานข้อมูล ด้วย jQuery อ่าน 2379 11 Aug 10 ปรับแต่ง facebook comments ด้วย css กำหนด style ให้เข้ากับเว็บ อ่าน 17763
