Hưỡng dẫn viết ứng dụng Facebook với PHP SDK

Share it:
Có rất nhiều bài viết hướng dẫn tạo các ứng dụng vui trên mạng, bài viết này mình cũng tham khảo rất nhiều từ các bài viết khác tổng hợp lại, vừa để lưu lại và cho các bạn mới tìm hiểu dễ dàng tiếp cận.



Hiện nay có rất nhiều các ứng dụng vui trên Facebook chủ yếu các ứng dụng này dùng để câu Like cho các Fanpage. Bài viết này mình hướng dẫn viết các ứng dụng vui như vậy bằng bộ PHP SDK của Facebook và viết trên ngôn ngữ PHP.

Bài viết hướng dẫn viết một ứng dụng Facebook đơn giản từ đấy chúng ta có thể phát triển thêm. Đầu tiên chúng ta vào trang Developers của Facebook rồi vào mục Ứng dụng https://developers.facebook.com/apps
Bấm vào Create new app tại của sổ Create new app chúng ta nhập vào bao gồm App name chúng ta nhập tên của ứng dụng mình nhập là App demo, App namespace: ví dụ mình nhập là app-demo-a thì để vào ứng dụng của mình chỉ cần vào theo URL http://apps.facebook.com/app-demo-a Đến đây ta bấm tiếp tục setting cho ứng dụng của mình.
Phần setting cơ bản cho ứng dụng bao gồm các mục:
Thông Tin Cơ Bản:
Display Name:App demo
Namespace:app-demo-a
Contact Email: tranngoctri@gmail.com
App Domains: vansanngoaitroi.vn đây là domain nơi mình sẻ đặt ứng dụng
Sandbox Mode: có 2 chế độ Enabled và Disabled cho phép người khác dùng ứng dụng hay không
Website with Facebook Login
Site URL:http://vansanngoaitroi.vn
App on Facebook
Canvas URL:http://vansanngoaitroi.vn/app-demo/ địa nơi đặt code ứng dụng của mình như mình khai bào ỡ trên ứng dụng của mình đặt trên host vansanngoaitroi.vn và app-demo là thư mục chứa ứng dụng của mình.
Secure Canvas URL:https://vansanngoaitroi.vn/app-demo/ ở đây giao thức nhập vào phải là https

Page Tab
Page Tab Name:App demo
Page Tab URL:http://vansanngoaitroi.vn/app-demo/
Secure Page Tab URL:http://vansanngoaitroi.vn/app-demo/
Page Tab Edit URL:http://vansanngoaitroi.vn/app-demo/
Sau khi đã nhập xong chúng ta Save lại.
Trong phần này phần quan trong nhất là thông tin của App ID và App Secret.
Trên thực tế cái ứng dụng là cái frame chạy đến cái trang của mình trên host thôi, ở đây mình sẻ tạo 1 file index.php trong thư mục app-demo và có nội dung như sau:
<?php
echo "Test App demo";
?>
Khi chay ứng dụng với URL là http://apps.facebook.com/app-demo-a ta sẻ được kết quả như sau:
Từ đây ta có thể thêm vào rất nhiều thứ như để chia sẻ trên đây ví dự như hình ảnh, nhạc, video,... Hoạc tạo các ứng dụng trắc nghiệm, game,... quan trọng là ý tưởng và việc mình dùng với mục đích tốt không hẳn là các ứng dụng này chúng ta dùng để câu Like.
Để tương tác với các thành viên cũng như người dùng Facebook được ta phải dùng đến bộ SDK của Facebook ở đây mình dùng ngôn ngữ PHP nên mình dùng bộ PHP SDK link download mình đã nói ở trên rồi bậy giờ chúng ta download nó về giải nén và copy thư mục src vào thư mục app-demo để chúng ta dùng.
Để tương tác với người dùng Facebook ta nạp các thư viện của nó vào ta có code mẫu trên file index.php đoạn này dùng để login vào Facebook và lấy thông tin người dùng. Trong đoạn code này nếu chưa đăng nhập vào ứng dụng tự động đăng nhập vào.
<?php
include 'src/facebook.php'; // nạp thư viện SDK
$config['appId']=' 294290284011916'; // là giá trị của app ID khi ta cài đặt ứng sụng
$config['secret']='9b13182696e2212d16b4b6e692ce49a3'; // là giá tri App Secret
$config['fileUpload']=true; // Để là true vì ta sẻ upload hình ảnh lên facebook
$facebook = new Facebook($config); // khởi tạo
$userid = $facebook->getUser(); //Lấy ID của người dùng
if ($userid) //Đoạn này kiểm tra thông tin người dùng và xuất ra
{
try{
$user = $facebook->api('/me'); //Lấy thông tin người dùng
echo "Thông tin cá nhân của user trên Facebook";
echo "<pre>";
print_r($user);
echo "<pre>";
}
catch(FacebookApiException $e) //Nếu chưa đăng nhập vào Facebook ứng dụng tự động đăng nhập lại
{
echo 'Lỗi:'.$e->getMessage();
$loginUrl = $facebook->getLoginUrl();
exit("Vui lòng login lại <a href='$loginUrl' target='_top'>vào đây</a> để đăng nhập lại");
}
}
else //Nếu chưa lấy được userid ứng dụng tự động đăng nhập vào Facebook
{
$loginUrl = $facebook->getLoginUrl();
exit("Loading ...<script>window.top.location.replace('$loginUrl');</script>");
}
?>
Chạy ứng dụng ta sẻ nhận được kết quả là:
Thông tin cá nhân của user trên Facebook
Array
(
[id] => 100000465685825
[name] => Trí Trần Ngọc
[first_name] => Trí
[last_name] => Trần Ngọc
[link] => http://www.facebook.com/tranngoctribmt
[username] => tranngoctribmt
[birthday] => 1985
[hometown] => Array
(
[id] => 105037459531773
[name] => Ban Me Thuot, Đắc Lắk, Vietnam
)
[location] => Array
(
[id] => 108458769184495
[name] => Ho Chi Minh City, Vietnam
)
[bio] => Bình thường như bao người.
[quotes] => Đừng mong cầu một cuộc sống dễ dàng, hãy mong cầu cho sức mạnh để chịu đựng những khó khăn.
[gender] => male
[interested_in] => Array
(
[0] => female
)
[relationship_status] => Single
[timezone] => 7
[locale] => vi_VN
[languages] => Array
(
[0] => Array
(
[id] => 104059856296458
[name] => Vietnamese
)
)
[verified] => 1
[updated_time] => 2012-09-19T09:10:06+0000
)
Lấy tên người dùng:$name = $user['name'];
Lấy địa chỉ Facebook của người dùng: $link = $user['link'];
Lấy thông tin giới tính: $gender = $user['gender'];

Một số hàm lấy ra ngày thắng năm sinh và avata của người dùng:
$birthday = $facebook->api('/me?fields=birthday'); // lấy ngày tháng năm sinh
hoặc: $birthday = $user['birthday'];
Để lấy ra ngày sinh, tháng sinh, năm sinh chúng ta có thể từ $birthday
$birthday = explode("/",$birthday['birthday']);
$month = $birthday['0'];
$day = $birthday['1'];
$year = $birthday['2'];
Với một số hàm để lấy ra được thông tin ta phải thêm các Permission như
user_birthday,user_photos,friends_birthday,publish_actions,publish_stream,
,status_update,photo_upload,read_friendlists
Tuỳ vào các thông tin cần lấy mà chúng ta thêm vào các Permission cần thiết

Và hàm lấy ra avata
$headers = get_headers('https://graph.facebook.com/'.$userid.'/picture',1);
$ava = $headers['Location'];

với avata chúng ta có 3 tham số ?type truyền vào để lấy các kích thước khác nhau như: small,normal,large

Lấy danh sách bạn bè: $friends = $facebook->api("/me/friends");
Với những thông tin trên chúng ta đã có thể tạo ra khá nhiều ứng dụng vui rồi.

Dưới đây là code mẫu post link lên trên trang cá nhân sau khi dùng ứng dụng:
<?php
include 'src/facebook.php';
$config['appId']=' 294290284011916';
$config['secret']='9b13182696e2212d16b4b6e692ce49a3';
$config['fileUpload']=true;
$facebook = new Facebook($config);
$paramsp['scope'] = 'publish_stream';
$paramsp['redirect_uri'] = 'http://vansanngoaitroi.vn/app-demo/';
$userid = $facebook->getUser();
if ($userid) 
{
try{
if($_POST['do']=='Đăng lên tường') // Phần đăng Link và nội dung lên tường
{
$user = $facebook->api('/me');
$status1 = $_POST['status'];
$post_link = $facebook->api('/me/feed', 'POST',
array(
'link' => 'http://tranngoctri.com', // Nếu như chỉ post với status thì ta bỏ dùng này đi
'message' => $status1.'Đang test',
));
echo "Post link thành công";
}
else
{
//Phần sử lý nội dung của ứng dụng
$status = "Test với status ";
} 
}
catch(FacebookApiException $e)
{
echo 'Lỗi:'.$e->getMessage();
$loginUrl = $facebook->getLoginUrl($paramsp);
exit("Vui lòng login lại <a href='$loginUrl' target='_top'>vào đây</a> để đăng nhập lại");
}
}
else
{
$loginUrl = $facebook->getLoginUrl($paramsp);
exit("Loading ...<script>window.top.location.replace('$loginUrl');</script>");
}
?>
// phần hiển thị nội dung sau khi dùng ứng dụng
<form name="test" method="POST">
<?=$status?>
<input type="hidden" name="status" value="<?php echo $status; ?>">
<input name="do" value="Đăng lên tường" type="submit">
</form>


Và sau đây là code mẫu tạo một 1 tấm hình ghi hình và chữ lên tấm hình và đăng hình lên trên tường.
Trước tiên ta phải có 1 tấm hình nên background.jpg và 1 thu muc tmp.
Đoạn code dưới đâu ghi avata người dùng và tên người dùng lên tấm hình background.jpg
<?php
include 'src/facebook.php';
$config['appId']=' 294290284011916';
$config['secret']='9b13182696e2212d16b4b6e692ce49a3';
$config['fileUpload']=true;
$facebook = new Facebook($config);
$paramsp['scope'] = 'publish_stream';
$paramsp['redirect_uri'] = 'http://vansanngoaitroi.vn/app-demo/';
$userid = $facebook->getUser();
$fname='tmp/'.$userid.'.jpg'; //Tấm hình tạo ra được đặt trong thu muc tmp và có tên là id của người dùng
if ($userid) 
{
try{
if($_POST['do']=='Đăng lên tường')
{
$user = $facebook->api('/me');
$post_photo = $facebook->api('/me/photos', 'POST', array(
'source' => '@'.realpath($fname),
'message' => "Test application",
)
);
exit('Đã đăng lên tường');
}
else
{
$user = $facebook->api('/me');
$name = $user['name']; //Lấy tên của người dùng
$headers = get_headers('https://graph.facebook.com/'.$userid.'/picture?type=large',1);
$avt = imagecreatefromjpeg($headers['Location']); //Lấy thông tin tấm ảnh
//Ghi lên ảnh
$image=imagecreatefromjpeg('background.jpg'); 
$color=imagecolorallocate($image,0,0,0);
imagecopymerge($image, $avt, 64, 115, 0, 0, 180, 180, 100); //Ghi hình vào background
imagefttext($image, 24, 0, 250, 155, $color, 'mabella.ttf', $name); //Ghi tên lên background
imagejpeg($image,$fname,90);
imagedestroy($image);
} 
}
catch(FacebookApiException $e)
{
echo 'Lỗi:'.$e->getMessage();
$loginUrl = $facebook->getLoginUrl($paramsp);
exit("Vui lòng login lại <a href='$loginUrl' target='_top'>vào đây</a> để đăng nhập lại");
}
}
else
{
$loginUrl = $facebook->getLoginUrl($paramsp);
exit("Loading ...<script>window.top.location.replace('$loginUrl');</script>");
}
?>
<img border="0" src="<?=$fname?>?<?=rand(1,99)?>"><br> //Hiển thị tấm hình
<form name="test" method="POST">
<input name="do" value="Đăng lên tường" type="submit">
</form>


Trên đây chỉ là code mẫu cơ bản để có thể bắt tay vào tạo ra 1 ứng dụng Facebook thực sự với PHP SDK.
Share it:

Chia Sẻ

Post A Comment:

0 comments: