โจทย์มีอยู่ว่า
1. สร้างเทมเพลทโดยใช้ Codeignniter หรือไม่ใช้ก็ได้
1.1 สร้างหน้าล็อกอิน ผ่าน facebook โดยใช้ SDK Version ล่าสุด โดยมี Permission ที่ขอเข้าถึงบัญชีผู้ใช้ Facebook มีดังนี้
- กลุ่มข้อมูลพื้นฐาน เช่น ชื่อ นามสกุล
- E-mail โดยต้องบังคับว่าหากผู้ใช้ไม่อนุญาตให้เข้าถึงข้อมูลอีเมล์ จะไม่สามารถทำการล็อกอินได้ ต้องขอ Permission ในการเข้าถึงอีเมลอีกครั้ง
1.2 เสร็จหน้า export pdf โดยให้ข้อมูลใน pdf สามารถเเสดงผลภาษาไทยได้
---------------------------------------------------------------------------------------------------------------------------------------------------------
ผมติดปัญหาข้อนี้อะครับ
- E-mail โดยต้องบังคับว่าหากผู้ใช้ไม่อนุญาตให้เข้าถึงข้อมูลอีเมล์ จะไม่สามารถทำการล็อกอินได้ ต้องขอ Permission ในการเข้าถึงอีเมลอีกครั้ง
รบกวนผู้รู้ช่วยบอกผมทีครับ
---------------------------------------------------------------------------------------------------------------------------------------------------------
Code หน้า login.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login Application Facebook</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link href="css/bootstrap-social.css" rel="stylesheet" type="text/css">
<link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
<style>
#wall {
height: 100px;
}
</style>
</head>
<body>
<?php
session_start();
$app_id = '992254084152242'; // AppID Facebook
$app_secret = '3db519ffb4b099327a1e1233edfbf86e'; //App Secret
$required_scope = 'public_profile, email'; //Permissions required
$redirect_url = 'http://localhost/Test0001/Login.php'; //FB redirects กลับเมื่อ login ผ่านแล้ว
require('/facebook-php-sdk-v4-4.0-dev/autoload.php');// นำไฟล์ facebookเข้ามา
//---------------------------------------------------------------------------
//เรียกใช้ class
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;
FacebookSession::setDefaultApplication($app_id , $app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
try {
$session = $helper->getSessionFromRedirect();
} catch (FacebookRequestException $ex) {
die(" Error1 : " . $ex->getMessage());
} catch(\Exception $ex) {
die(" Error2 : " . $ex->getMessage());
}
//---------------------------------------------------------------------------
//สร้างปุ่ม log out
if(isset($_GET["log-out"]) && $_GET["log-out"]==1){
unset($_SESSION["fb_userDetails"]);// ยกเลิก SESSION
//session ver is set, redirect user
header("location:
http://localhost/Test0001/logout.php");
//header("location: ". $redirect_url);
}
//---------------------------------------------------------------------------
//ทำการเช็คค่าที่ได้จาก facebook
if(isset($session)) {
//ทำการเชื่อมต่อแล้วอ่านค่าจาก facebook graph
$user_profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className());
//ทำการเก็บค่าลง session เพื่อเรียกใช้งานต่อไป
$_SESSION["fb_userDetails"] = $user_profile->asArray();
$user_id = ( isset( $_SESSION["fb_userDetails"]["id"] ) )? $_SESSION["fb_userDetails"]["id"] : "";
$user_name = ( isset( $_SESSION["fb_userDetails"]["name"] ) )? $_SESSION["fb_userDetails"]["name"] : "";
$user_email = ( isset( $_SESSION["fb_userDetails"]["email"] ) )? $_SESSION["fb_userDetails"]["email"] : "";
header("location: ". $redirect_url);
} else {
//ตรวจสอบค่า session fb_userDetails
if(isset($_SESSION["fb_userDetails"])){
echo "สวัสดี: ".$_SESSION["fb_userDetails"]["name"]." หากต้องการออกจากระบบคลิก ".'[ <a href=?log-out=1>Logout</a> ]' ;
$_SESSION["fb_userDetails"]["name"] = $_SESSION["fb_userDetails"]["name"];
$_SESSION["fb_userDetails"]["id"] = $_SESSION["fb_userDetails"]["id"];
$_SESSION["fb_userDetails"]["email"] = $_SESSION["fb_userDetails"]["email"];
$_SESSION["fb_userDetails"]["first_name"] = $_SESSION["fb_userDetails"]["first_name"];
$_SESSION["fb_userDetails"]["last_name"] = $_SESSION["fb_userDetails"]["last_name"];
$_SESSION["fb_userDetails"]["gender"] = $_SESSION["fb_userDetails"]["gender"];
$_SESSION["fb_userDetails"]["link"] = $_SESSION["fb_userDetails"]["link"];
$_SESSION["fb_userDetails"]["locale"] = $_SESSION["fb_userDetails"]["locale"];
echo '[ <a href=export_pdf.php>สร้างไฟล์ PDF</a> ]'; //คลิกลิงค์ไปยังหน้าสร้างไฟล์ PDF
}
else {
//Link Login facebook
$login_url = $helper->getLoginUrl( array( 'scope' => $required_scope) );
?>
<!-- หน้าฟอร์มล็อกอิน -->
<div class="container">
<div id="wall"></div>
<div class="form-horizontal">
<form class="col-md-6 col-md-offset-3">
<div class="form-group">
<h1 class="text-center">Application Login</h1>
</div>
<div class="form-group">
<input type="email" class="form-control input-lg" placeholder="Email">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Password">
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg btn-block">Sign In</button>
</div>
<div class="form-group">
<?php
// ปุ่มคลิกล็อกอินผ่านเฟสบุค
echo '<a href="'.$login_url.'" class="btn btn-block btn-lg btn-social btn-facebook"><i class="fa fa-facebook"></i> Sign in with Facebook </a>';
?>
</div>
</form>
</div>
<?php
}
}
?>
</div>
<script src="
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>
api facebook php สามารถตั้งค่า Permission ได้ไหมครับ
1. สร้างเทมเพลทโดยใช้ Codeignniter หรือไม่ใช้ก็ได้
1.1 สร้างหน้าล็อกอิน ผ่าน facebook โดยใช้ SDK Version ล่าสุด โดยมี Permission ที่ขอเข้าถึงบัญชีผู้ใช้ Facebook มีดังนี้
- กลุ่มข้อมูลพื้นฐาน เช่น ชื่อ นามสกุล
- E-mail โดยต้องบังคับว่าหากผู้ใช้ไม่อนุญาตให้เข้าถึงข้อมูลอีเมล์ จะไม่สามารถทำการล็อกอินได้ ต้องขอ Permission ในการเข้าถึงอีเมลอีกครั้ง
1.2 เสร็จหน้า export pdf โดยให้ข้อมูลใน pdf สามารถเเสดงผลภาษาไทยได้
---------------------------------------------------------------------------------------------------------------------------------------------------------
ผมติดปัญหาข้อนี้อะครับ
- E-mail โดยต้องบังคับว่าหากผู้ใช้ไม่อนุญาตให้เข้าถึงข้อมูลอีเมล์ จะไม่สามารถทำการล็อกอินได้ ต้องขอ Permission ในการเข้าถึงอีเมลอีกครั้ง
รบกวนผู้รู้ช่วยบอกผมทีครับ
---------------------------------------------------------------------------------------------------------------------------------------------------------
Code หน้า login.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login Application Facebook</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link href="css/bootstrap-social.css" rel="stylesheet" type="text/css">
<link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
<style>
#wall {
height: 100px;
}
</style>
</head>
<body>
<?php
session_start();
$app_id = '992254084152242'; // AppID Facebook
$app_secret = '3db519ffb4b099327a1e1233edfbf86e'; //App Secret
$required_scope = 'public_profile, email'; //Permissions required
$redirect_url = 'http://localhost/Test0001/Login.php'; //FB redirects กลับเมื่อ login ผ่านแล้ว
require('/facebook-php-sdk-v4-4.0-dev/autoload.php');// นำไฟล์ facebookเข้ามา
//---------------------------------------------------------------------------
//เรียกใช้ class
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRedirectLoginHelper;
FacebookSession::setDefaultApplication($app_id , $app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
try {
$session = $helper->getSessionFromRedirect();
} catch (FacebookRequestException $ex) {
die(" Error1 : " . $ex->getMessage());
} catch(\Exception $ex) {
die(" Error2 : " . $ex->getMessage());
}
//---------------------------------------------------------------------------
//สร้างปุ่ม log out
if(isset($_GET["log-out"]) && $_GET["log-out"]==1){
unset($_SESSION["fb_userDetails"]);// ยกเลิก SESSION
//session ver is set, redirect user
header("location: http://localhost/Test0001/logout.php");
//header("location: ". $redirect_url);
}
//---------------------------------------------------------------------------
//ทำการเช็คค่าที่ได้จาก facebook
if(isset($session)) {
//ทำการเชื่อมต่อแล้วอ่านค่าจาก facebook graph
$user_profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className());
//ทำการเก็บค่าลง session เพื่อเรียกใช้งานต่อไป
$_SESSION["fb_userDetails"] = $user_profile->asArray();
$user_id = ( isset( $_SESSION["fb_userDetails"]["id"] ) )? $_SESSION["fb_userDetails"]["id"] : "";
$user_name = ( isset( $_SESSION["fb_userDetails"]["name"] ) )? $_SESSION["fb_userDetails"]["name"] : "";
$user_email = ( isset( $_SESSION["fb_userDetails"]["email"] ) )? $_SESSION["fb_userDetails"]["email"] : "";
header("location: ". $redirect_url);
} else {
//ตรวจสอบค่า session fb_userDetails
if(isset($_SESSION["fb_userDetails"])){
echo "สวัสดี: ".$_SESSION["fb_userDetails"]["name"]." หากต้องการออกจากระบบคลิก ".'[ <a href=?log-out=1>Logout</a> ]' ;
$_SESSION["fb_userDetails"]["name"] = $_SESSION["fb_userDetails"]["name"];
$_SESSION["fb_userDetails"]["id"] = $_SESSION["fb_userDetails"]["id"];
$_SESSION["fb_userDetails"]["email"] = $_SESSION["fb_userDetails"]["email"];
$_SESSION["fb_userDetails"]["first_name"] = $_SESSION["fb_userDetails"]["first_name"];
$_SESSION["fb_userDetails"]["last_name"] = $_SESSION["fb_userDetails"]["last_name"];
$_SESSION["fb_userDetails"]["gender"] = $_SESSION["fb_userDetails"]["gender"];
$_SESSION["fb_userDetails"]["link"] = $_SESSION["fb_userDetails"]["link"];
$_SESSION["fb_userDetails"]["locale"] = $_SESSION["fb_userDetails"]["locale"];
echo '[ <a href=export_pdf.php>สร้างไฟล์ PDF</a> ]'; //คลิกลิงค์ไปยังหน้าสร้างไฟล์ PDF
}
else {
//Link Login facebook
$login_url = $helper->getLoginUrl( array( 'scope' => $required_scope) );
?>
<!-- หน้าฟอร์มล็อกอิน -->
<div class="container">
<div id="wall"></div>
<div class="form-horizontal">
<form class="col-md-6 col-md-offset-3">
<div class="form-group">
<h1 class="text-center">Application Login</h1>
</div>
<div class="form-group">
<input type="email" class="form-control input-lg" placeholder="Email">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Password">
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg btn-block">Sign In</button>
</div>
<div class="form-group">
<?php
// ปุ่มคลิกล็อกอินผ่านเฟสบุค
echo '<a href="'.$login_url.'" class="btn btn-block btn-lg btn-social btn-facebook"><i class="fa fa-facebook"></i> Sign in with Facebook </a>';
?>
</div>
</form>
</div>
<?php
}
}
?>
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>