การใช้งาน stream.publish ของ facebook Old REST API ด้วย php sdk


หน้าแรก facebook app การใช้งาน stream.publish ของ facebook Old REST API ด้วย php sdk
อ่านเนื้อหา ที่เกี่ยวข้องเบื้องต้น หากไม่ได้ติดตามตั้งแต่แรก ได้ที่
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 

refer: http://www.ninenik.com/content.php?arti_id=357


ขึ้นไปด้านบน