
วิธีการใช้ Facebook Open Graph API ดึงลิสรายชื่อเพื่อนของเราทั้งหมดมาเก็บไว้ในที่หน้าฟอร์มแล้วยิงข้อความไปที่ Wall เพื่อนนั้นทำง่ายมากครับก่อนอื่นเลยต้องมีไฟล์ SDK ของ Facebook API ครับ แล้วก็ไปสร้าง Apps บนหน้า http://developers.facebook.com ก่อนนะครับ ซึ่งถ้าใครยังทำไม่ได้ให้ไปศึกษาที่ บทความเหล่านี้
พัฒนา Open Graph API ของ Facebook ด้วย PHP ฉบับเริ่มต้น ตอนที่ 1
พัฒนา Open Graph API ของ Facebook ด้วย PHP ฉบับเริ่มต้น ตอนที่ 2
เมื่อสร้าง Apps แล้วให้ไปที่ “Graph API explorer” ที่ https://developers.facebook.com/tools/explorer ก่อนนะครับ เมนู Graph API Explorer นั้นให้เลือกเป็น Apps ที่เราสร้างขึ้นเพื่อใช้กับ กรณี ศึกษานี้ก่อน


เมื่อเลือกแล้วให้ทำการ กดที่ปุ่ม Get Access token เพื่อขอสิทธิบางอย่าง

ในกรณีนี้เราต้องเลือก Extended Permissions ก่อนแล้วไป คลิกเครื่องหมายถูกที่ publish_stream ครับ เสร็จแล้วให้กด Get Access Token ก็เป็นอันจบครับ
กลับมาที่ Code ของเราครับ สร้าง HTML หน้า Form โดยมี Drop Down List และปุ่มขึ้นมาบน Form ก่อนนะครับ
1 2 3 4 5 6 7 8 9 10 11 |
<!doctype html> <html xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>ขอโทษที่ อ่านยาก เพราะผมไม่ใช่ Blogger รีวิวของ กระโหลกกะลา นะครับ</title> </head> <body> <form id="selectFriend" name="selectFriend" method="post"> </form> </body> </html> |
แทรก Code ของ Facebook SDK ลงไปตาม บทความก่อนหน้านี้ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php require 'src/facebook.php'; $facebook = new Facebook(array( 'appId' => 'APPID', 'secret' => 'SECRET', )); // Get User ID $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } } //เอาไว้ แทรก Post ?> |
สังเกตตำแหน่งที่ผมเขียนว่า “//เอาไว้แทรก Post” ไหมครับ ให้แทรก Code PHP ดังนี้ครับเพื่อ ขอสิทธิในการ Alert อนุญาติให้ Facebook ใช้บัญชีคุณ Post อะไรก็ได้ และขอ Access ส่วนของ freinds ครับ
1 2 3 4 5 6 7 8 9 |
if ($user) { $logoutUrl = $facebook->getLogoutUrl(); $user_friends =$facebook->api('/me/friends'); sort($user_friends['data']); } else { $loginUrl = $facebook->getLoginUrl( array( 'scope'=>'publish_stream' )); } |
คำสั่ง sort($user_friends[‘data’]); จะถูกเรียกใช้ ต่อจากนี้ครับ ไปที่ Tag HTML ของ Drop Down List ครับ แทรก Code ตามนี้
1 |
<select id="friend" name="friend"> <!--?php foreach($user_friends['data'] as $friend_data){?--><option value="<?php echo $friend_data['id'];?>"><!--?php echo $friend_data['name'];?--></option> <!--?php } ?--> </select> |
ลองรันตัวอย่างดูครับ จะได้ Facebook Apps ที่สามารถยุ่งกับรายชื่อเพื่อน และมีสิทธิในการเข้าถึงหน้า Wall ของเพื่อนเราได้ด้วยนะครับ



หน้าของ ฟอร์มจะมี Drow Down List คราวนี้ก็สามารถนำไปประยุกต์ใช้กับ Code ในการ Publish Wall ได้แล้วครับ ซึ่งเราสามารถแทรก Code ชุดนี้ลงในส่วนของหน้า ดังกล่าว
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//Post if(isset($_POST['submit'])){ $sentofriend=$_POST['friend']; $message=$_POST['message']; $name=$_POST['name']; $link=$_POST['link']; $caption=$_POST['caption']; $picture=$_POST['picture']; $actions_name=$_POST['actions_name']; $actions_link=$_POST['actions_link']; $attachment = array( 'message' => ''.$message.'', 'name' => ''.$name.'', 'caption' => ''.$caption.'', 'link' => ''.$link.'', 'description' => 'หน้าม้า ตัวจริงขอคอนเฟิร์มว่ามันแจ่มโลกมากม่าก', 'picture' => ''.$picture.'', 'actions' => array( array( 'name' => ''.$actions_name.'', 'link' => ''.$actions_link.'' ) )); if($result=$facebook->api('/'.$sentofriend.'/feed/','post',$attachment)){ echo"Success!"; }else{ echo"Fail!"; } |
โดยการกระทำจะเกิดขึ้นเมื่อมีการกดปุ่ม Submit หรือ Post ครับ

ตัวอย่างถ้าอยากเล่นสนุกไปที่นี่ครับ http://www.thaiqr.com/horseface/ แล้วลองป่วนหน้า Wall เพื่อนของเรากันครับ ส่วนชุด Source Code นั้น คิดว่าคงทำได้กันอยู่แล้วถ้าอยากได้ล่ะก็ที่นี่ครับ
Auto Fill and Post Friend’s Wall Facebook API (Version 1.0.0)
บ๊ายบาย…
ลองแล้วไม่มีปัญหา ขอบคุณครับ ^^.
ถ้าต้องการส่งพร้อมกันหลายๆคน ต้องทำไรอย่างครับ
ต้องแก้ใหม่ ให้ดึงรายชื่อเพื่อนออกมาเก็บใน array แล้วเอา Foreach วนส่งไปเลยครับ
อ่อ ขอบคุณครับ
มันขึ้นว่า Fatal error: Uncaught OAuthException: (#200) Feed story publishing to other users is disabled for this application thrown in C:inetpub….. ช่วยแนะนำหน่อยคับ
Facbook ได้ปิดการส่งไปยัง Wall เพื่อนแล้วหรือปล่าวครับ ทำไม่ได้แล้ว.