เมื่อวานผมได้เขียนนำเสนอวิธีการดักจับอีเว้นต์คลิกปุ่ม like ในกล่อง likebox ที่ได้มาจากเฟชบุกเอามาแปะที่เว็บของเรา ตอนนี้ผมก็ยังคิดเพิ่มเติมไม่ออกว่าจะเอามันไปประยุกต์ใช้อะไรดี แต่ก็รู้ว่ามันมีประโยชน์บ้างล่ะ
ผมเคยอ่าน document วิธีการใช้งาน facebook javascript SDK ที่ทางเฟชบุกเขียนเผยแพร่ไว้ ก็ไม่ค่อยเข้าใจ เฮียแกเล่นไม่มีตัวอย่างเอาเสียเลย ไปอ่านตามเว็บต่างๆก็ไม่ค่อยกระจ่างเท่าไร จนเมื่อได้ลองศึกษาอ่านมันจริงๆจังๆนี่แหละ จึงพอจะเข้าใจอยู่ได้บ้าง
เฟชบุกนั้นมันออกสคริปต์ javascript สำเร็จรูปไว้ให้เราใช้งาน ไว้ให้เราใช้ติดต่อกับเว็บของมันบ้างล่ะ เพื่อขอข้อมูลบางอย่างมาแสดงที่เว็บของเรา หรือใช้สำหรับเขียนโค้ดเพิ่มเติมเข้าไปในโค้ดที่มันทำไว้ให้เราใช้งาน จำพวก ปุ่ม like,กล่องคอมเม้นท์ ปุ่มล้อกอินด้วยเฟชบุก อะไรพวกนี้ ที่เอามาติดตามเว็บกันอย่างแพร่หลาย
กล่องคอมเม้นท์ของเฟชบุก ถ้าเราอยากรู้ว่ายูสเซอร์คลิกปุ่มส่งข้อความแล้วนะ เราก็สามารถรู้ได้เหมือนกัน ไว้วันหลังถ้าไม่ขี้เกียจและเห็นว่าเป็นประโยชน์ก็จะเขียนให้อ่าน
ดู Demo ก่อนมั้ย ก่อนจะดุโค้ด เข้าไปหน้า Demo แล้วลองคลิปปุ่ม like แล้วลองคลุก unlike ดู ผมเขียนให้มันแสดง dialogbox ขึ้นมาเพื่อบอกว่า ผมจับได้นะว่าคลิกปุ่ม like ผมจับได้นะว่าคลิกปุ่ม unlike
ดูโค้ดทั้งหมดที่ทำให้หน้านั้นทำงาน
<html xmlns:fb="http://ogp.me/ns/fb#"> <head> <meta charset="utf-8"> </head> <body> <fb:like-box href="http://www.facebook.com/select2webdotcom" width="292" show_faces="true" stream="true" header="true"></fb:like-box> <div id="fb-root"></div> <script type="text/javascript"> window.fbAsyncInit = function() { FB.init({ appId : '164430746956784', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true, // parse XFBML oauth : true //enables OAuth 2.0 }); FB.Event.subscribe('edge.create', function(href, widget) { // do something here alert('click like : +1'); }); FB.Event.subscribe('edge.remove', function(href, widget) { // do something here alert('click unlike : -1'); }); }; ( function() { var e = document.createElement('script'); e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; e.async = true; document.getElementById('fb-root').appendChild(e); }()); </script> </body> </html> |
เตือนสติกันไว้ว่า เน้นตรงนี้นะว่าห้ามอ่านผ่าน
ในโค้ดก้อปปี้ไปใช้งานได้ แต่ต้องเปลี่ยนอยู่ 3 จุด
1.เปลี่ยนไปเป็น appID ของตัวเอง
appId : '164430746956784', |
2. เปลี่ยนไปเป็นเว็บของตัวเอง
<fb:like-box href="http://www.facebook.com/select2webdotcom" width="292" show_faces="true" stream="true" header="true"></fb:like-box> |
3. ต้องเอาไปรันบนเว็บจริงๆที่ตรงกับที่ระบุไว้ตอนสร้าง app ในเฟชบุกเท่านั้น โค้ดจึงจะทำงาน เพราะเฟชบุกมันจะคอยเช็ก
อธิบายโค้ด
เริ่มแรก โครงสร้าง html 2 ตัว ตัวแรกเป็นกล่อง likebox กับอีกตัวมันไว้ fb-root มันไว้เป็นคอนเทนเนอร์สำหรับโหลดจาวาสคริปต์
เหตุที่มันไม่ใช้แท็ก ลงไปคอนเทนเนอร์ fb-root แล้วให้เริ่มทำการโหลดสคริปต์ขึ้นมา
( function() { var e = document.createElement('script'); e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; e.async = true; document.getElementById('fb-root').appendChild(e); }()); |
ส่วนสุดท้ายก็กระตุ้นการทำงานโค้ดสำเร็จรูปของเฟชบุก ที่เพิ่งโหลดมาหยกๆให้ทำงานในเบราเซอร์ โค้ดของเราก็เขียนแทรกเข้าไปในนี้แหละ มันจะได้พลอยถูกกระตุ้นและใช้งานได้ไปด้วย (จะว่าโค้ดเราเต็มๆก็คงไม่เต็มปาก มันเป็นไวยากรณ์จากเฟชบุกนั่นแหละ เราเอามาวางเพื่อใช้งานตามวัตถุประสงค์)
window.fbAsyncInit = function() { FB.init({ appId : '164430746956784', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true, // parse XFBML oauth : true //enables OAuth 2.0 }); FB.Event.subscribe('edge.create', function(href, widget) { // do something here alert('click like : +1'); }); FB.Event.subscribe('edge.remove', function(href, widget) { // do something here alert('click unlike : -1'); }); }; |
บทความนี้ขออุทิศคุณงามความดีให้คุณเอฟ ที่ให้กำลังใจในการตื่นนอนแต่เช้า
Leave a Reply