Thứ Sáu, 4 tháng 10, 2013

Cách post link và hình ảnh lên tường của user trên facebook

Trong bài viết này các bạn sẽ học cách để đăng bài lên tường user trên Facebook sử dụng PHP và Facebook API . Để hiểu bài viết này bạn phải có kiến ​​thức về phát triển ứng dụng Facebook và sử dụng API của facebook . Trước khi  bắt đầu bạn phải có một tài khoản facebook và Tạo ứng dụng Facebook cho trang web của bạn. Ở đây các bạn sẽ tương tác với apps của facebook và viết code post link, tiêu đề và hình ảnh lên tương của user hoặc fanpage của user. Việc post hình lên tường của user có 2 cách đó là dùng file ảnh có sẵn trên host của bạn hoặc cho phép upload file ảnh và post lên tường user. Tại bài viết này mình chỉ hướng dẫn các bạn sử dụng upload file ảnh từ máy tính của user.

Về cơ bản chúng ta có 3 trang PHP cần xử lý. File cấu hình ( config.php ), Trang index (index.php) và Trang xử lý ( process.php ) . Trang index có 1 form chứa code HTML với tên tiêu đề và danh sách fanpage của user , Khi user chọn 1 trang fanpage và nhập tiêu đề và nhấn nút post thì code xử lýsẽ tới file process.php , nếu post thành công thì sẽ trả ra tin nhắn post thành công hiện thông báo cho user biết. Các file khác như Facebook PHP SDK , tập tin css vv được bao gồm trong tập tin tải về mẫu . 
File cấu hình : Config.php
Config.php gồm tất cả các biến, chẳng hạn như ứng dụng  Application ID, secret, return url etc... các bạn phải thay đổi các thiết lập của riêng bạn. 
<?php
include_once("inc/facebook.php"); //include facebook SDK
######### edit details ##########
$appId = '62164711xxxx'; //Facebook App ID
$appSecret = '47b0435de239c38210ced5dcxxxxx'; // Facebook App Secret
$return_url = 'http://post-to-fb-wall.com/process.php';  //return url (url to script)
$homeurl = 'http://post-to-fb-wall.com/';  //return to home
$fbPermissions = 'publish_stream,manage_pages';  //Required facebook permissions
##################################
//Call Facebook API
$facebook = new Facebook(array(
  'appId'  => $appId,
  'secret' => $appSecret,
  'fileUpload' => true,
  'cookie' => true
));
$fbuser = $facebook->getUser();
?>
Trang index.php
Index.php sẽ kiểm tra user có tồn tại hoặc đăng nhập chưa nếu chưa đăng nhập user sẽ được chuyển sang trang xác thực facebook. Khi đăng nhập thành công sẽ được chuyển hướng trở lại trang index và user có thể post link, tiêu đề và hình ảnh lên tường facebook, nơi anh / cô ta được trình bày với một hình thức có chứa một hộp đầu vào tin nhắn và danh sách các trang Facebook của mình. 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Post to user Page Wall</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="fbpagewrapper">
<div id="fbpageform" class="pageform">
<form id="form" name="form" method="post" action="process.php" enctype="multipart/form-data" >
<h1>Post to Facebook Page Wall</h1>
<p>Choose a page to post. <?php
$logOutUrl = $facebook->getLogoutUrl(array('next'=>$homeurl.'logged-out.php'));
echo '<a href="'.$logOutUrl.'">Log Out</a>';
?>
</p>
<label>Pages
<span class="small">Select a Page</span>
</label>
<select name="userpages" id="upages">
<?php
    foreach ($postResults as $postResult) {
            echo '<option value="'.$postResult["page_id"].'">'.$postResult["name"].'</option>';
        }
    ?>
</select>
<label>Message
<span class="small">Write something to post!</span>
</label>
<input type="file" name="pictureFile" id="pictureFile">
<textarea name="message"></textarea>
<button type="submit" class="button" id="submit_button">Send Message</button>
<div class="spacer"></div>
</form>
</div>
</div>
</body>
</html>
<?php
}
?>
</body>
</html>
Đăng lên tường Facebook 
Sau khi đăng nhập facebook thành công user sẽ có được nhận được id và tiêu đề và gửi một yêu cầu POST lên facebook.
if($_POST)
{
//Post variables we received from user
$userPageId  = $_POST["userpages"];
$userMessage  = $_POST["message"];
$link  = $_POST["link"];
$description  = $_POST["description"];
$userPhoto  = $_FILES["pictureFile"]["tmp_name"];
if(strlen($userMessage)<1) 
{
//message is empty
$userMessage = 'No message was entered!';
}
//HTTP POST request to PAGE_ID/feed with the publish_stream
$post_url = '/'.$userPageId.'/photos';
//posts message on page statues 
$msg_body = array(
'source'=>'@'.$userPhoto,
'message' => $userMessage,
'description' => 'Post images to wall facebook.',
'picture' => 'http://www.topweb24h.com/logo.png'
);}
if ($fbuser) {
 try {
$postResult = $facebook->api($post_url, 'post', $msg_body );
} catch (FacebookApiException $e) {
echo $e->getMessage();
 }
}else{
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
header('Location: ' . $loginUrl);
}
Trong các bài viết trước các bạn đã biết cách tạo app và thiết lập các thông số cơ bản để có thể truy cập app một cách bình thường. Facebook cung cấp sẵn cho các developer sử dụng chức năng role có thể tạo ra các test user để test app mà không ảnh hưởng đến tài khoản chính của bạn. Các bạn nên sử dụng chức năng này thay vì dùng account chính của mình để test.
Chúc các bạn thành công.

0 nhận xét: