Applications and ToolsDeveloperFacebook DeveloperSocial Media MarketingSocial Network

พัฒนา Facebook Open Graph API ตอนที่ 10 เทคนิคการดึง FQL แบบซับซ้อน

สำหรับรอบนี้คงจะเป็นการใช้งาน Open Graph API ของ Facebook เช่นเดิมที่เราได้เดินทางมาถึงการใช้งานภาษา FQL แล้วรอบนี้จะเป็นการใช้งานแบบซับซ้อนครับ 

Facebook FQL แบบซับซ้อน
Facebook FQL แบบซับซ้อน

คำสั่ง FQL ของ Facebook Open Graph API นั้นอย่างที่เรารู้กันดีมันทำงานเหมือนกับภาษา SQL เพื่อเรียกข้อมุลภายในฐานข้อมูลปรากฏขึ้นมา โดยการเขียนเรียกคำสั่งนั้นไม่ต่างกับ Syntax ของภาษา SQL เลยแม้แต่น้อยเพียงแค่ Operator บางตัวที่จะมีความแตกต่างไปบ้างครับ ซึ่งรอบนี้ก็คงเป็นหน้าจอการเรียกใช้คำสั่ง FQL แบบหลักๆ ที่ใช้กันบ่อยในการพัฒนาแอพพลิเคชันบน Facebook ครับ ผลลัพธ์ที่เราจะเรียกออกมาดูนั้นสามารถ เรียกได้ 2 แบบคือ

https://api.facebook.com/method/fql.query?query=QUERY

หรือเข้าไปใช้งานผ่าน เครื่องมือ Graph API Explorer ที่นี่ครับ

https://developers.facebook.com/tools/explorer

คำสั่งน่าสนใจใน FQL ที่เราต้องพบบ่อย

คำสั่งในการเรียกข้อมูลผู้ใช้งานที่เข้าระบบอยู่ นั่นคือ me() ครับ มีรูปแบบการทำงานคือ

SELECT name FROM user WHERE uid = me()

หรือ

SELECT uid, name, pic_square FROM user WHERE uid = me()
OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

ผลลัพธ์ตัวอย่างที่เราจะได้จาก FQL ข้างบนก็จะเป็นแบบนี้ครับ ดึง id ของเราออกมา,  ชื่อของเรา และ ลิงค์รูปภาพ Profile ของเราด้วย

ผลลัพธ์ครับ
ผลลัพธ์ครับ

คำสั่งร่วมกับ FQL ในการดึงข้อมูล User Profiles

function get_user_profile_details($user_facebook_id)
{
$fql = "SELECT name,pic_square,pic,uid FROM user where uid =".$user_facebook_id;
$param = array(
'method' => 'fql.query',
'query' => $fql
);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}

คำสั่งในการดึง รหัสของอัลบัมภาพของเรา พร้อมกับ ชื่ออัลบัม และรายละเอียด

function get_album_id_by_album_name($album_name)
{
//return array of data
$fql='SELECT aid, owner, name, object_id FROM album WHERE owner=me() and name="'.$album_name.'"';
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $this->facebook->api($param);
return $fqlResult;
}

ตรวจสอบว่า User นี้เป็นเจ้าของ App

function check_is_app_user($facebook_user_id){//return 1 if the user is using the current application
try{
$user=$facebook_user_id;
$fql = "select is_app_user from user where uid=" . $user;
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);


$fqlResult = $this->facebook->api($param);

if($fqlResult)
return $fqlResult['0']['is_app_user'];
else
return 0;
}
catch(Exception $o){
d($o);
}
}

คำสั่ง FQL ในการเรียก Tag บนรูปภาพว่า user ที่เล่นแอพฯ นี้โดน Tag ที่ไหน ตำแหน่งของภาพไหนด้วย

function get_user_tagged_photos_details($user_facebook_id){

$fql = "SELECT pid,text,xcoord,ycoord,created FROM photo_tag WHERE subject =".$user_facebook_id;

$param = array(
'method' => 'fql.query',
'query' => $fql

);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}
function get_tagged_users_id_by_photoid($photo_id){

$fql = "SELECT text FROM photo_tag WHERE pid =".$photo_id;

$param = array(
'method' => 'fql.query',
'query' => $fql

);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}

คำสั่งโชว์ข้อความที่ยังไม่ได้ถูกอ่าน และโชว์บน Notification

function get_fb_notification_by_uid($user_id){

$fql = "SELECT notification_id, sender_id,app_id,icon_url, title_html, body_html, href
FROM notification
WHERE recipient_id=".$user_id."
AND is_unread = 1
AND is_hidden = 0";
$param = array(
'method' => 'fql.query',
'query' => $fql

);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}

คำสั่งดึงรูปเพื่อนของเรา ที่เพื่อนเราอัพขึ้นรายสัปดาห์

function get_friends_photo_details($date){

$fql = "SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified FROM photo WHERE aid IN
(SELECT aid FROM album WHERE owner IN
(SELECT uid2 FROM friend WHERE uid1=me())
)
AND created ."$date;

$param = array(
'method' => 'fql.query',
'query' => $fql

);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}

function get_friends_photo_details_last_week(){

$fql = "SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified FROM photo WHERE aid IN
(SELECT aid FROM album WHERE owner IN
(SELECT uid2 FROM friend WHERE uid1=me())
)
AND created > One_week_ago_in_unix_time ORDER BY created DESC";

$param = array(
'method' => 'fql.query',
'query' => $fql

);
$fqlResult = $this->facebook->api($param);
return $fqlResult[0];
}

และสุดท้ายคืิดึงรูปทั้งหมดใน อัลบัม ต่างๆด้วย FQL

function get_photos_by_album_id($album_id){

if($album_id)
$fql = 'SELECT pid,src_big,owner,link,position,created,caption,src FROM photo WHERE aid="'.$album_id.'" ORDER BY created DESC LIMIT 0,6';

$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $this->facebook->api($param);
return $fqlResult;

}

แน่นอนว่าเรื่องเหล่านี้เป็นเรื่องยาก และคิดว่าคงต้องหาเวลามา ทำ Workshop กันจริงๆ จังๆ ครับไว้รอบหน้าจริงกว่านี้ (อิอิ)

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

2 Comments

  1. มันสามารถดึง comment ของคนที่เป็นเพื่อนเรามาได้ไหมครับ!

Leave a Reply

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน