Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 104,975

HOME > บทความจากสมาชิก > PHP Facebook Login (SDK 5) ระบบล็อกอิน PHP/MySQL กับ Facebook (Update : 2017)


 
VPS  250 ҷ͹

PHP Facebook Login (SDK 5) ระบบล็อกอิน PHP/MySQL กับ Facebook (Update : 2017)

PHP Facebook Login (SDK 5) ระบบล็อกอิน PHP/MySQL กับ Facebook (Update : 2017) ปัจจุบันปี 2017 ทาง Facebook ได้พัฒนา API สำหรับการ Login ด้วย PHP มาถึง SDK 5 แล้ว และได้มีการยกเลิกเวอร์ชั่นเก่าๆ ไปเช่น SDK 2 ซึ่งทำให้หลายเว็บไซต์ที่ไม่ได้มีการอัพเดดจะไม่สามารถใช้งานได้ เป็นการยังคับให้นักพัฒนาโปรแกรม PHP มีการอัพเดดเวอร์ชั่นของ PHP ไปในตัวด้วย เพราะว่า SDK 4 หรือ 5 เป็นต้นไปจะรองรับบน PHP 5.4 ขึ้นไปเท่านั้น ถ้าใช้เวอรชั่นต่ำกว่านี้อาจจะต้องไปใช้ SDK ของ JavaScript แทน

ใน SDK 5 นี้ยังไม่ได้แตกต่างอะไรกับ SDK 4 มากนัก และเช่นเดิมสามารถติดตั้ง SDK ได้จาก Composor หรือจะดาวน์โหลดไฟล์โดยตรงเลยก็ได้ ส่วนวิธีการเขียนแบบเบื้องต้น เช้นการดึง ID, Name , Email ก็ไม่ได้แตกตต่างกับเวอร์ชั่นก่อนๆ



PHP and Facebook API Login (SDK 5)


ก่อนอื่นจะต้องรู้ก่อนว่า SDK 5 จะรองรับ PHP 5.4 เป็นต้นไป และเปิดใช้ mbstring ส่วน Composer(มีหรือไม่ก็ได้)

Step 1 : สร้าง App ID บน Facebook API

ขั้นแรกสุดจะต้องสสมัคร Facebook Developer โดยสามารถสมัครได้ที่ https://developers.facebook.com/

ก่อนจะเปิดใช้งาน Facebook Login จะต้องสร้าง App ที่จะรองรับการทำงานซะก่อน โดยไปที่

PHP Facebook Login (SDK 5)

ลือกเมนู Add a New App

PHP Facebook Login (SDK 5)

ตั้งชื่อ App หรือชื่อเว็บ ซึ่งอาจจะหมายถึงชื่อกรุ๊ปที่จะใช้งาน

PHP Facebook Login (SDK 5)

ในหน้า Dashboard ให้ Copy ตัว App ID และ App Secret ไปใช้งาน

PHP Facebook Login (SDK 5)

แสดง App ID และ App Secret

PHP Facebook Login (SDK 5)

App Review ตั้งค่าการ Login ให้เป็น Yes

PHP Facebook Login (SDK 5)

ในส่วนของ Settings ให้เลือก Add Platform

PHP Facebook Login (SDK 5)

เลือกเป็น Website

PHP Facebook Login (SDK 5)

จากนั้นใส่ URL ให้ถูกต้อง (ถ้าใส่ไม่ถูกต้องาจจะไม่ทำงาน)








Step 2 : ดาวน์โหลด Facebook for PHP SDK 5 มาใช้งาน

ดาน์โหลด SDK 5
https://developers.facebook.com/docs/php/gettingstarted

ให้ดาวน์โหลด SDK 5 ที่ใช้สำหรับ PHP (สามารถติดตั้งได้จาก Composer)

composer.json
{
  "require" : {
    "facebook/graph-sdk" : "~5.0"
  }
}
หรือจะดาวน์โหลดท้ายบทความ

PHP Facebook Login (SDK 5)

หลังจากที่ดาวน์โหลดแล้วไฟล์ที่เราจะใช้จะอยู่ที่ src/Facebook เราจะใช้แค่นี้เท่านั้น

PHP Facebook Login (SDK 5)

ให้ Copy ไฟล์ทั้งหมดไปไว้ในโฟเดอร์ facebook-sdk-v5 และเก็บโฟเดอร์ไว้ใน root ของเว็บ

PHP Facebook Login (SDK 5)

ตัวอย่างการอัพโหลดไปไว้ที่ Server ซึ่งเวลาตอนที่เรียกใช้จะได้เป็น
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';


Step 3 : การเรียกใช้งาน และ ทดสอบการ Login ด้วย Facebook API และ PHP

ในการทำรับบ Login ด้วย PHP จะต้องสร้างไฟล์แรกเป็นไฟล์ที่ใช้สำหรับการสร้าง Link เพื่อตรวจสอบไปยัง Facebook และไฟล์ที่ทำหน้าที่รับค่าหลังจากตรวจสอบเสร็จเรียบร้อยแล้ว (login call back)
  • login.php (สร้าง Link สำหรับตรวจสอบ Facebook Login)
  • login-callback.php (ไฟล์เมื่อ Login ผ่านแล้วก็จะส่งค่ามายังหน้านี้)


login.php (PHP)
<?php
session_start();
ini_set('display_errors', 1);
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;


$fb = new Facebook\Facebook([
  'app_id' => '190103684833793',
  'app_secret' => '1c12639e99b03149f2a29834a2ac471e',
  'default_graph_version' => 'v2.5',
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email', 'user_likes']; // optional

$loginUrl = $helper->getLoginUrl('http://www.thaicreate.com/login-callback.php', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
?>
ไฟล์ login.php จะสร้างลิ้งค์สำหรับการล็อกอินและลิ้งค์ call back หลังจากที่ล็อกอินเรียบร้อยแล้ว

PHP Facebook Login (SDK 5)

ลิ้งค์เพื่อล็อกอิน

PHP Facebook Login (SDK 5)

ผู้ใช้เลือก Allow สิทธิ์การเข้าถึงข้อมูล

login-callback.php (PHP)
<?php
session_start();
ini_set('display_errors', 1);
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;


$fb = new Facebook\Facebook([
  'app_id' => '190103684833793',
  'app_secret' => '1c12639e99b03149f2a29834a2ac471e',
  'default_graph_version' => 'v2.5',
]);

$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)) {
  // Logged in!
  $_SESSION['facebook_access_token'] = (string) $accessToken;

  // Now you can redirect to another page and use the
  // access token from $_SESSION['facebook_access_token']

  $response = $fb->get('/me?fields=id,name,gender,email,link', $accessToken);

  $user = $response->getGraphUser();
  echo'<pre>';
  print_r($user);
  echo'</pre>';

  //echo 'ID: ' . $user['id'];
  //echo 'Name: ' . $user['name'];
  //echo 'Gener: ' . $user['gener'];
  //echo 'Email: ' . $user['email'];
  //echo 'Link: ' . $user['link'];

}
?>
ไฟล์ login-callback.php จะทำงานเมื่อล็อกอินเรียบร้อยแล้ว

PHP Facebook Login (SDK 5)

ตัวอย่างการดึงข้อมูลเช่น Facebook ID หรือ Name , Email มาใช้งาน

และถ้าล็อกอินสำเร็จ จะได้ค่า $accessToken มาใช้งาน และจะเห็นว่ามีการจัดเก็บลงใน Session

  $_SESSION['facebook_access_token'] = (string) $accessToken;
แสดงว่าในหน้าอื่นๆ เราจะสามารถเรียกใช้ token นี้ที่จะดึงข้อมูลของ User มาใช้งานได้ เช่น

<?php
session_start();
ini_set('display_errors', 1);
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;


$fb = new Facebook\Facebook([
  'app_id' => '190103684833793',
  'app_secret' => '1c12639e99b03149f2a29834a2ac471e',
  'default_graph_version' => 'v2.5',
]);


if (isset($_SESSION['facebook_access_token'])) {

  $response = $fb->get('/me?fields=id,name,gender,email,link', $_SESSION['facebook_access_token']);

  $user = $response->getGraphUser();
  echo'<pre>';
  print_r($user);
  echo'</pre>';

  //echo 'ID: ' . $user['id'];
  //echo 'Name: ' . $user['name'];
  //echo 'Gener: ' . $user['gener'];
  //echo 'Email: ' . $user['email'];
  //echo 'Link: ' . $user['link'];

}
?>
ในกรณีที่เรียกใช้หน้าอื่นๆ

หรือเราสามารถจัดการด่วยการจัดเก็บมันลงใน MySQL แล้วสร้าง Session ขึ้นมาจัดการเองก็ได้ เช่น

Table : tb_facebook
CREATE TABLE IF NOT EXISTS `tb_facebook` (
  `ID` int(6) NOT NULL AUTO_INCREMENT,
  `FACEBOOK_ID` varchar(50) NOT NULL,
  `NAME` varchar(150) NOT NULL,
  `EMAIL` varchar(250) NOT NULL,
  `PICTURE` varchar(250) NOT NULL,
  `LINK` varchar(250) NOT NULL,
  `CREATE_DATE` datetime NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID` (`FACEBOOK_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
โครงสร้างตารางที่มช้จัดเก็บ

PHP Facebook Login (SDK 5)

โครงสร้างของตาราง








login-callback.php (PHP) : ล็อกอินสำเร็จและมีการจัดเก็บลงใน MySql
<?php
session_start();
ini_set('display_errors', 1);
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;


$fb = new Facebook\Facebook([
  'app_id' => '190103684833793',
  'app_secret' => '1c12639e99b03149f2a29834a2ac471e',
  'default_graph_version' => 'v2.5',
]);

$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)) {
  // Logged in!
  $_SESSION['facebook_access_token'] = (string) $accessToken;

  // Now you can redirect to another page and use the
  // access token from $_SESSION['facebook_access_token']

  $response = $fb->get('/me?fields=id,name,gender,email,link', $accessToken);

  $user = $response->getGraphUser();
  echo'<pre>';
  print_r($user);
  echo'</pre>';

  //echo 'ID: ' . $user['id'];
  //echo 'Name: ' . $user['name'];
  //echo 'Gener: ' . $user['gener'];
  //echo 'Email: ' . $user['email'];
  //echo 'Link: ' . $user['link'];

	$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
	$objDB = mysql_select_db("mydb");
	mysql_query("SET NAMES UTF8");


	// Check Exists ID
	$strSQL = "SELECT * FROM tb_facebook WHERE FACEBOOK_ID = '".$user['id']."' ";
	$objQuery = mysql_query($strSQL);
	$objResult = mysql_fetch_array($objQuery);
	if($objResult)
	{
		$_SESSION["strFacebookID"] = $user['id'];
		header("location:page1.php");
		exit();
	}
	else
	{
		// Create New ID

			$strPicture = "https://graph.facebook.com/".$user['id']."/picture?type=large";

			$strSQL ="  INSERT INTO  tb_facebook (FACEBOOK_ID	,NAME,EMAIL,PICTURE,LINK,CREATE_DATE) 
				VALUES
				('".trim($user['id'])."',
				'".trim($user['name'])."',
				'".trim($user['email'])."',
				'".trim($strPicture)."',
				'".trim($user['link'])."',
				'".trim(date("Y-m-d H:i:s"))."')";
			$objQuery  = mysql_query($strSQL);

			$_SESSION["strFacebookID"] = $user['id'];
			header("location:page1.php");
			exit();
	}

	mysql_close();


}

?>

page1.php (PHP) : ดึงค่า Session มาใช้งาน แล้วเลือก Facebook ID ที่ล็อกอินอยู่ในขณะนั้น
<?php
session_start();

	$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
	$objDB = mysql_select_db("mydb");
	mysql_query("SET NAMES UTF8");


	// Check Exists ID
	$strSQL = "SELECT * FROM tb_facebook WHERE FACEBOOK_ID = '".$_SESSION["strFacebookID"]."' ";
	$objQuery = mysql_query($strSQL);
	$objResult = mysql_fetch_array($objQuery);
	if($objResult)
	{
		echo "Welcome to my Account<br><br>";
		echo "Facebook ID = ".$objResult["FACEBOOK_ID"];
		echo "<br><a href='".$objResult["LINK"]."' target='_blank'>
		<img src='".$objResult["PICTURE"]."' border='0'></a><br><br>";
		echo $objResult["NAME"];
	}
	
	echo "<br><br><br><a href='logout.php'>Logout</a>";
	mysql_close();
?>

logout.php (PHP) : ล้าง Session
<?php
session_start();
session_destroy();
header("location:login.php");
?>
จาก Code จะเห็นว่ากรณีที่มีข้อมูลอยู่แล้วให้ไปหน้า page1.php ในทันที แต่ถ้าเป็นข้อมูลใหม่ให้ทำการ Insert ลงใน Table ก่อน

ทดสอบการทำงาน

PHP Facebook Login (SDK 5)

เมื่อ Login สำเร็จจะมายัง page1.php และดึงข้อมูลออกมาแสดง

PHP Facebook Login (SDK 5)

มีการจัดเก็บลงใน MySQL Table

Download Code



Error นี้เกิดจากยังไมไ่ด้ session_start()
Fatal error: Uncaught exception 'Facebook\Exceptions\FacebookSDKException' with message 'Sessions are not active. Please make sure session_start() is at the top of your script.'









   
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2017-04-11
  Download : No files
Sponsored Links
สร้างป้ายบาร์โค๊ตจากฟอร์น Code39 และ Crystal Report ด้วย Visual Basic 2013
สร้างป้ายบาร์โค๊ตจากฟอร์น Code39 และ Crystal Report ด้วย Visual Basic 2013
เป็นการสร้างป้ายฉลากบาร์โค๊ตจากฟอร์น Code39 และ Crystal Report ด้วย Visual Basic 2013
Rating : Update : 2017-06-11 20:58:22
สร้าง Auto ID หรือลำดับที่มีตัวอักษร ปี, เดือน บน SQL Server ด้วย Stored Procedure
สร้าง Auto ID หรือลำดับที่มีตัวอักษร ปี, เดือน บน SQL Server ด้วย Stored Procedure
บทความตัวอย่างการสร้าง Auto ID หรือรหัสลำดับ ที่ประกอบด้วย ตัวอักษร, ปี และ เดือน บน SQL Server Database ด้วย Stored Procedure
Rating : Update : 2017-03-25 13:16:08
Windows Form การใช้ User Control กับ MenuStrip สร้างฟร์อมแบบแบบง่ายๆ (VB.Net, C#)
Windows Form การใช้ User Control กับ MenuStrip สร้างฟร์อมแบบแบบง่ายๆ (VB.Net, C#)
ตัวอย่างการใช้ MenuStrip สร้าง Menu บน Windows Form Application และการสร้าง User Control เพื่อสร้าง Form ที่สามารถควบคุมการแสดงผลบนหน้าจอให้อยู่ในหน้าจอเดียวกัน
Rating : Update : 2017-03-24 17:38:18
PHP การสร้าง APP ID Facebook และการเปิดใช้งาน Facebook Canvas PHP
PHP การสร้าง APP ID Facebook และการเปิดใช้งาน Facebook Canvas PHP
การสร้าง APP ของ Facebook และการใช้งาน Facebook Canvas (ต่อเนื่องจากบทความก่อน จะใส่ ลิ้งไว้ท้ายบทความ ซึ่งจะนำมาใช้ร่วมกันว่าพอแจ้งเตือนแล้วพอกดไปแล้วมันจะไปไหน คำตอบคือ มันจะมาที่ Canvas นี้แหละ คือหน้าที่จะให้มันไปหลังกดดูเราจะมาเพิ่มในบทความนี้
Rating : Update : 2017-04-13 21:51:04
เชื่อมต่อ Excel กับ SQL Server  Database ใช้สำหรับดึงข้อมูลแบบ Refresh แล้วแสดงผลบน Excel
เชื่อมต่อ Excel กับ SQL Server Database ใช้สำหรับดึงข้อมูลแบบ Refresh แล้วแสดงผลบน Excel
บทความเทคนิคการเชื่อมต่อ Excel กับ SQL Server ใช้สำหรับการดึงข้อมูลจาก Table ของ SQL Server มาแสดงผลบน Sheet ของ Excel มีประโยชน์ในกรณีที่ต้องการนำข้อมูลนั้นๆ มาใช้งานต่อกับ Excel
Rating : Update : 2017-03-30 17:25:53
รู้จัก Windows Service การสร้าง Application ให้รันบน Windows (VB.Net,C#)
รู้จัก Windows Service การสร้าง Application ให้รันบน Windows (VB.Net,C#)
โปรแกรมประเภท Windows Service ช่วยให้เราสามารถสร้างแอ็พพลิเคชันที่สามารถเรียกใช้งานและทำงานได้นานและพร้อมที่จะทำงานได้ตลอดเวลา ซึ่งมันจะทำงานในระบบ Session ของ Windows
Rating : Update : 2017-04-20 18:13:03
jQuery กับ Ajax และ JSON  ใช้ Serialize() ส่งค่า Form (Content-Type: application/json)
jQuery กับ Ajax และ JSON ใช้ Serialize() ส่งค่า Form (Content-Type: application/json)
ตัวอย่างการใช้ jQuery กับ Ajax และ JSON การรับส่งข้อมูลในรุปแบบต่างๆ เช่น String, JSON String, JSON Object และค่าจากการ Input Form
Rating : Update : 2017-03-24 17:39:22
ThaiCreate.Com Forum
Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   


Acc : thaicreate@hotmail.com




Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2018 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่