สอนการใช้งาร Facebook PHP SDK ตอนที่ 3 การ Login Facebook ด้วย Facebook API
บทความนี้ผมจะพูดถึงการ ใช้ Facebook API Login ชึ้งการสร้าง Web Application ในปัจจุบันเราจะเห็นว่ามีการเชื่อมต่อ กับโซเชียล ต่างๆ ไม่ว่าจะเป็น Facebook , Google Plus ,Twitter, และอื่นๆอีกมากมายเพื่อให้ง่ายต่อการเข้าถึงและทำงานได้ง่ายรวดเร็ว เมื่อ Web Application ได้มีการเขื่อต่อกับ โซเชียล ดังที่ผมจะยกตัวอย่างในบทความนี้ก็คือ การเชื่อต่อ Web Application เข้ากับ Facebook ผ่านทาง Facebook API ที่ทาง Facebook ได้ทำขึ้นมาเพื่อ ให้นักพัฒนาสำมารถ สร้างสรร Web Application ได้ง่ายรวดเร็วยิ่งขึ้นและมีความปลอดภัยแก่ผู้ใช้งาน
สิ่งที่ต้องใช้ในการทำการทดลองสร้าง Login Facebook ด้วย Facebook API
บทความที่เกี่ยวข้อง
ถ้าได้ติดตั้งโปรแกรมเสร็จเรียบร้อยแล้ว ต่อไปก็มาเริ่มทำการสร้าง Facebook SDK Login กันเลยครับ
- ทำการเปิดโปรแกรม Netbeans PHP IDE ขึ้นมาแล้วทำการ News File ที่ชื่อ fb-login.php และ Fb-callback.php ขึ้นมาครับ
2. เมื่อทำการสร้าง File ทั้งสองแล้ว เปิด ไฟล์ fb-login.php ขึ้นมาครับ แล้วทำการ copy Code ดังต่อไปนี้ไปไส่ใน file fb-login.php
<?php
/*
Facebook SDK Part 3
สอนการใช้งาร Facebook PHP SDK ตอนที่ 3 การ Login Facebook ด้วย Facebook API
by http://facebook-sdk.blogspot.com/
*/
session_start();
//ทำการเรียก Sesion_start(); เพื่อให้ Sesion ต่างๆทำงาน
require_once __DIR__ . '/src/Facebook/autoload.php';
//ทำการสร้างการดึงไฟล์ต่างๆ
//ของ facebook sdk ด้วยคำสั่ง require_once __DIR__ .'ตามด้วย ที่เก็บ file autoload.php '
$fb = new Facebook\Facebook([
'app_id' => '740357906069989',
'app_secret' => '85be710ace9ac4e630fdcff56e51bdbd',
'default_graph_version' => 'v2.4',
]);
//เป็นการสร้างคำสั่ง เพื่อ เก็บค่า app_id ,app_secret และ เวิอชั่นเริมต้นของ Graph API
$helper = $fb->getRedirectLoginHelper();
//เป็นการ นำค่าของ app_id ,app_secret, Graph API ที่เก็บไว้ในตัวแปล $fb ไปตรวจสอบ ผ่านgetRedirectLoginHelper()
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://localhost/facebook-adk-Manually/fb-callback.php', $permissions);
//เมื่อ ผ่าน จะส่งค่าที่ได้ไปยัง fb-callback.php เพื่อที่จะได้ใช้งานต่อ
echo '<a href="' . htmlspecialchars($loginUrl) . '"><img src="img/loginfacebook.gif"></a>'; htmlspecialchars($loginUrl) . '"><img src="img/loginfacebook.gif"></a>';
3. ทำกา copy Code ดังต่อไปนี้ไปไส่ในไฟล์
fb-callback.php
<!doctype html>
<html>
<meta charset="utf-8">
<?php
session_start();
//ทำการเรียก Sesion_start(); เพื่อให้ Sesion ต่างๆทำงาน
require_once __DIR__ . '/src/Facebook/autoload.php';
//ทำการสร้างการดึงไฟล์ต่างๆ
//ของ facebook sdk ด้วยคำสั่ง require_once __DIR__ .'ตามด้วย ที่เก็บ file autoload.php '
$fb = new Facebook\Facebook([
'app_id' => '740357906069989',
'app_secret' => '85be710ace9ac4e630fdcff56e51bdbd',
'default_graph_version' => 'v2.4',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (! isset($accessToken)) {
if ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
exit;
}
// Logged in
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());
// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();
// Get the access token metadata from /debug_token
$tokenMetadata = $oAuth2Client->debugToken($accessToken);
echo '<h3>Metadata</h3>';
var_dump($tokenMetadata);
// Validation (these will throw FacebookSDKException's when they fail)
//$tokenMetadata->validateAppId($config['app_id']);
// If you know the user ID this access token belongs to, you can validate it here
// $tokenMetadata->validateUserId('123');
$tokenMetadata->validateExpiration();
if (! $accessToken->isLongLived()) {
// Exchanges a short-lived access token for a long-lived one
try {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>";
exit;
}
echo '<h3>Long-lived</h3>';
var_dump($accessToken->getValue());
}
$_SESSION['fb_access_token'] = (string) $accessToken;
// User is logged in with a long-lived access token.
// You can redirect them to a members-only page.
// header('Location: https://example.com/members.php');
4. ทดสอบการทำงาน เปิดบลาวเชอร์ ขึ้นมาแล้ว พิมพ์ Url
http://localhost/facebook-adk-Manually/login.php จะได้ดังรูป แล้วคลิก Login Facebook
- จะได้ Pop-up ขึ้นมาตามรูปครับ ถ้าเรายังไม่ได้ อณุญาติ ให้เว็บเรากับทาง Facebook App ไปอณุญาติ เว็บกับทาง Facebook App กันก่อนนะครับ โดยการอณุญาติเว็บผมได้อธิบายวิธีทำไว้ที่บทความ การอณุญาติให้เว็บสามารถใช้ Facebook App ได้
- หลังจาก เราไได้อณุญาติเว็บกับทาง Facebook Apps แล้ว ก็ทำตามข้อ 4 อีกครั้ง ก็จะได้ Pop-up ขึ้นมาดังรูปครับ
- คลิก ตกลง ก็จะได้หน้าการแสดงผล ในไฟล์ fb-callback.php ที่ถูกส่งค่ามาจากการ login ในส่วนค่าที่ได้ออกมาก็จะมีค่า access Token ,app_id ,ชื้อ application และอื่นๆอีกมากมาย ตามที่เราได้ใช้คำสั่งในการ เรียกการแสดงผลออกมา
- มาถึงส่วนนี้ก็เป็นอันเสร็จสมบูรณ์ในการ log in ผ่าน facebook sdk
สอนการใช้งาร Facebook PHP SDK ตอนที่ 3 การ Login Facebook ด้วย Facebook API
ADS HERE !!!