DeveloperFacebook DeveloperMarketing IdeasPHPProgramming LanguageSocial MediaSocial Media MarketingSocial NetworkSQL

Facebook Graph API ตอนที่ 16 SDK กับการดึง Work, Like และ Education

หลายบริษัทที่มีการเก็บข้อมูลสำหรับวิจัยการตลา หรือข้อมูลประวัติของผู้บริโภคควรใช้ Graph API ของ Facebook มาช่วยสำหรับการดึงข้อมูลเหล่านั้นให้ง่ายขึ้นครับ

ช่วงเดือนมกราคม และไม่นานมานี้ Facebook API มีการเปลี่ยนแพลตฟอร์มเล็กน้อยทำให้เหล่านักพัฒนาต้องแก้ไขความถูกต้องกันระดับหนึ่ง แต่ไม่เป็นไรครับหากว่าได้แก้ไขกลับมาเรียบร้อยแล้วก็ได้เวลามาลุยกันต่อกับการ Hack The Graph ของ Facebook กันครับ

ในบทเรียนนี้จะเป็นตัวอย่างการเขียนภาษา PHP ร่วมกับ Facebook SDK สำหรับ PHP ให้ดึงข้อมูลเชิงลึกของผู้ใช้งานจาก Profile ไปเก็บในระบบเหมืองข้อมูลหรือ Data Warehouse ที่เป็นเหมือนศูนย์รวมข้อมูล ที่ธุรกิจทั้งหลายได้เก็บรวบรวมไว้จากหลากหลายแหล่ง เพื่อให้นักวิเคราะห์ข้อมูลได้ดึงขึ้นมาใช้ค้นหาทำ Data Mart และ Data Mining ในการทำระบบการสนับสนุนการตัดสินใจต่อไป
ศึกษาเพิ่มเติมเอาเองนะครับผ่าน Google ต่อมาเรามาเริ่มพัฒนากันครับ

ก่อนจะเข้าศึกษาวิธีการในบทเรียนนี้คุณจำเป็นต้องมีความรู้จากบทเรียนเหล่านี้ครับ

หากว่าพอมีพื้นฐานอยู่แล้ว ก็เข้าไปดาวน์โหลดเจ้า SDK สำหรับ PHP แล้วตั้งค่ากันเลยครับ ดาวน์โหลดที่ https://github.com/facebook/facebook-php-sdk
หากว่าดาวน์โหลดแล้ว เราจะใช้แค่ Folder ที่ชื่อว่า “src” แค่นั้นครับเอาไปวางไว้ใน Folder ของตัว Project ของเราทันที เข้าไปสมัคร Developers ของ Facebook แล้วทำการสร้าง App ขึ้นมาใหม่ เพื่อจะได้ค่า APP ID และ APP SECRET สำหรับใช้กับบทเรียนนี้ พร้อมกับระบุ Website ที่เราต้องการจะใช้เชื่อมต่อ API ให้เสร็จสรรพครับ

วิธีการดึง Likes, Works History และ Education
ดึงข้อมูลความชอบจาก Likes ว่าเรากด Likes Page ประเภทไหนชื่ออะไรมาบ้าง ให้แสดงผลออกมา
สร้างหน้า index.php ขึ้นมาเป็นหน้าแรก พร้อมปุ่มในการ Login และ Logout ขึ้นมา พร้อมใส่ Code คำสั่งในการเชื่อมต่อ Facebook SDK ดังนี้ครับ

 ''.$app_id.'',
  'secret' => ''.$app_secret.'',
));
// Get User ID
$user = $facebook->getUser();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
	
    $permission = $facebook->api('/me/permissions');
    if ($permission['data'][0]['email'] 
        && $permission['data'][0]['publish_stream']) {
	$user_profile = $facebook->api('/me');
	$access_token = $facebook->getAccessToken();
     }	
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array('scope' => 
'email,
offline_access,
publish_stream,
user_birthday,
user_location,
user_work_history,
user_about_me,
user_hometown,
user_status,
user_work_history,
publish_stream,
user_photos,
email,
user_interests,
user_education_history'));
}
?>

Likes | 
Works | 
Education | 
Logout

Login

สังเกตในส่วนของการ Login นะครับ จะมีการดึง Extended Permission ออกมาอยู่บางส่วนที่ต้องการ

 $loginUrl = $facebook->getLoginUrl(array('scope' => 
'email,
offline_access,
publish_stream,
user_birthday,
user_location,
user_work_history,
user_about_me,
user_hometown,
user_status,
user_work_history,
publish_stream,
user_photos,
email,
user_interests,
user_education_history'));

ซึ่งจะเกี่ยวข้องกับ Code ในส่วนของบรรทัดนี้

$permission = $facebook->api('/me/permissions');
    if ($permission['data'][0]['email'] 
        && $permission['data'][0]['publish_stream']) {
	$user_profile = $facebook->api('/me');
	$access_token = $facebook->getAccessToken();
     }	

สิ่งที่ทางผมต้องการดึงออกมานั้นแล้วแต่เราอยากจะขอครับ ซึ่งถ้าอยากได้อะไรก็ไป เลือกเอาเลยจาก Facebook Developers Page ครับในที่นี้ผมขอแค่
email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown,user_status,user_work_history,publish_stream,user_photos,email,user_interests
เท่านั้นครับ (ก็เยอะนะ)

ถ้าเสร็จแล้วก็ลอง Upload ไปรันดูครับ ทำการ Login จะเจอขั้นตอนดังนี้

หน้า Login ทำการเข้าระบบด้วย Facebook
หน้า Login ทำการเข้าระบบด้วย Facebook
ระบบจะขอสิทธิในการเข้าถึงข้อมูลที่เราต้องการ ทำการอนุญาติเลยครับ
ระบบจะขอสิทธิในการเข้าถึงข้อมูลที่เราต้องการ ทำการอนุญาติเลยครับ
เข้ามาแล้วเจอเมนูดังนี้ สามารถแก้ไขได้
เข้ามาแล้วเจอเมนูดังนี้ สามารถแก้ไขได้

ต่อมาคือหน้าสำหรับการดึง Likes และความชอบ
สร้างไฟล์ PHP ขึ้นมาชื่อว่า like.php ครับ แล้วใส่ Code ดังต่อไปนี้

 ''.$app_id.'',
  'secret' => ''.$app_secret.'',
));
// Get User ID
$user = $facebook->getUser();

if ($user) {
  try {
    $result = $facebook->api('/me/likes');
    if($result && $result['data']){
       foreach($result['data'] as $lks){
        echo "Categories: ".$category = $lks['id']."
"; echo "Name: ".$name = $lks['category']."
"; echo "Page ID: ".$id = $lks['name']."
"; echo "
"; } } } catch (FacebookApiException $e) { error_log($e); $user = null; } } ?>

โดยส่วนของ $result = $facebook->api(‘/me/likes’); จะเป็นการใช้ SDK ดึงส่วนของ Like ที่เราเคยกด เก็บในตัวแปร array แล้วทำการวนลูปตัวแปรแสดงค่าออกมาอีกทีด้วยคำสั่ง Foreach

if($result && $result[‘data’]){
foreach($result[‘data’] as $lks){
echo “Categories: “.$category = $lks[‘id’].”<br/>”;
echo “Name: “.$name = $lks[‘category’].”<br/>”;
echo “Page ID: “.$id = $lks[‘name’].”<br/>”;
echo “<hr/>”;
}
}

ทั้งหมดนี้สามารถทดสอบก่อนได้ที่ https://developers.facebook.com/tools/explorer/ ครับ

ทดสอบการส่งข้อมุลผ่าน Graph API Explorer ได้ก่อน
ทดสอบการส่งข้อมุลผ่าน Graph API Explorer ได้ก่อน

ผมแทรก Code ในการตบบรรทัด และคั่นแต่ละชุดข้อมูลด้วย เส้นลากหรือ Tag <hr/> ครับ
ลองรันดูจากไฟล์ likes.php สิ่งที่ได้จะเป็นดังนี้

หน้า Page ที่เราชอบแล้วทำการกด Like เพื่อดึงหมวดหมู่ของความชอบมา
หน้า Page ที่เราชอบแล้วทำการกด Like เพื่อดึงหมวดหมู่ของความชอบมา

หากประยุกต์ใช้กับการเก็บข้อมูล ลงใน MySQL ก็ทำได้ไม่ยากครับ

ดึงข้อมูลไปลง MySQL ก็ไม่ยาก
ดึงข้อมูลไปลง MySQL ก็ไม่ยาก

ต่อมาเป็นการดึงข้อมูลของ Works ประวัติการทำงาน
สร้างไฟล์ works.php ขึ้นมาครับ คราวนี้ลองใส่คำสั่งที่ใกล้เคียงกันลงไปดังนี้

 ''.$app_id.'',
  'secret' => ''.$app_secret.'',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
  try {

    $workresult = $facebook->api('/me?fields=work&limit=1');
    if($workresult && $workresult['work']){
       foreach($workresult['work'] as $works){
        echo $company_id = $works['employer']['id']; 
        echo"
"; echo $company_name = $works['employer']['name']; echo"
"; echo $location_name = $works['employer']['id']; echo"
"; echo "
"; } } } catch (FacebookApiException $e) { error_log($e); $user = null; } } ?>

เพียงแค่ตัวข้อมูล ต้องเปลี่ยนข้อมูลเล็กน้อย เช่นการเรียกข้อมูลชุดในของตัวแปรอีกที $works[’employer’][‘id’] หรือ $works[’employer’][‘id’] เป็นต้น
หากทำการ Upload ขึ้นไปจะเจอข้อมูลดังนี้

ประวัติการทำงานที่ถูกแสดงผลออกมา
ประวัติการทำงานที่ถูกแสดงผลออกมา

หากจับมาแสดงผลก็จะได้ข้อมูลที่ใกล้เคียง โดยการเขียน Code จำเป็นต้องสังเกตชุดของ Return JSON ครับ อย่างตัวอย่างที่มีก็จะเป็นการดึง work ออกมา
$workresult = $facebook->api(‘/me?fields=work’);
แล้วใช้ Foreach วนลูปที่

foreach($workresult[‘work’] as $works){
echo $company_id = $works[’employer’][‘id’]; echo”<br/>”;
echo $company_name = $works[’employer’][‘name’]; echo”<br/>”;
echo $location_name = $works[’employer’][‘id’]; echo”<br/>”;
echo “<hr/>”;
}

เห็นไหมครับว่าไม่ยากสักนิดเลยในการประยุกใช้ กับ Work ก็ไม่ยากอะไรนัก

ลองเพิ่มการขอสิมธิเข้าถึง user_education_history
ลองเพิ่มการขอสิมธิเข้าถึง user_education_history

เช่นกันถ้าผมต้องการเก็บข้อมูลของ Education

ก็เพียงแค่เปิด Permission เพิ่ม
แล้วนำค่าที่เพิ่มเข้ามาไปแก้ไขที่ index.php เสร็จแล้วก็ทำการ logout เข้าระบบใหม่ แล้วก็ลองดึงข้อมูล ผ่าน Code คำสั่งดังนี้

 ''.$app_id.'',
  'secret' => ''.$app_secret.'',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
  try {

    $eduresult = $facebook->api('/me?fields=education');
    if($eduresult && $eduresult['education']){
       foreach($eduresult['education'] as $education){
        echo $education_school = $education['school']['name']; 
        echo"
"; echo $education_year = $education['year']['name']; echo"
"; echo $education_type = $education['type']; echo"
"; echo "
"; } } } catch (FacebookApiException $e) { error_log($e); $user = null; } } ?>

ลองทดสอบดูก็จะเห็นว่าไม่ยากครับ

ดึงข้อมูลการศึกษาขึ้นมา
ดึงข้อมูลการศึกษาขึ้นมา

ต่อจากนั้นถ้าเราลองเก็บข้อมูลทั้งหมดลง Database MySQL ดูแล้วลองออกแบบ ER- Diagram ใหม่น่าจะได้ในรูปนี้ ชุดข้อมูลที่เราเลือกก็จะสามารถ สร้างรายงานออกมาให้ได้ไม่มีปัญหาเลยครับ ลองไปศึกษากันดูนะครับ มีปัญหาอะไรทักทายกันได้ที่ http://www.facebook.com/daydevthailand ยังไง Post ที่หน้า Wall เลยนะครับเพราะ Message นั้นเยอะมาก กลัวตกหล่น

Asst. Prof. Banyapon Poolsawas

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

Related Articles

Leave a Reply

Back to top button

Adblock Detected

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