ถามเกียวกับ session ของ facebook หน่อยคับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามเกียวกับ session ของ facebook หน่อยคับ

ถามเกียวกับ session ของ facebook หน่อยคับ

ไฟล์นี้ fb_ca_chain_bundle.crt เกี่ยวอะไรกันไหมคับ

ถ้าเอาออกไปมันจะไม่เก็บค่า session

ถ้าเอาไว้ค่า session กด logout แล้วก็ไม่ยอม clear session ให้คับ



Wera 223.206.62.xxx 07-01-2011 21:14:31

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

มันต้องลงอะไรเพิ่มใน server หรือเปล่าคับ php ใช้ version ไหนคับ



Wera 223.206.62.xxx 07-01-2011 21:46
 ความคิดเห็นที่ 2

 fb_ca_chain_bundle.crt มีไฟล์นี้ด้วยหรอ
ลองเอาโค้ดหน้า test.php มาดูเผื่อแนะนำได้

หรือไม่ก็ เอาตัวอย่าง ในหน้า

https://www.ninenik.com/สร้าง_login_logout_และกำหนด_permission_ของ_facebook_ด้วย_php_sdk_-352.html

ก็อบไปลองรันดู

 



Ninenik 124.120.175.xxx 07-01-2011
 ความคิดเห็นที่ 3
<?php
session_start(); // กำหนดไว้ กรณีอาจได้ใช้ตัวแปร session

include("facebook.php"); //  เรียกใช้งานไฟล์ php-sdk สำหรับ facebook

// สร้าง Application instance.
$facebook = new facebook(array(
  'appId'  => '189905577691269', // appid ที่ได้จาก facebook   
  'secret' => '303705ed0bd5e167e525cd72ae2eacc7', // app secret ที่ได้จาก facebook   
  'cookie' => true, // อนุญาตใช้งาน cookie   
));

Facebook::$CURL_OPTS[CURLOPT_CAINFO] = 'FULL_PATH_TO_CA_CERT_FILE'; 


// appId และ secret ดูวิธีการได้มาจาก 
// https://www.ninenik.com/สร้าง_comment_ด้วย_social_plugins_ใน_facebook_api_อย่างง่ายดาย-291.html

// ตรวจสอบสถานะการ login
$session = $facebook->getSession();

// สร้างฟังก์ชันไว้สำหรัดทดสอบ การแสดงผลการใช้งาน
function pre($varUse){
	echo "<pre>";
	print_r($varUse);
	echo "</pre>";
}
// สร้างตัวแปรสำหรับเก็บข้อมูลของสมาชิกเมื่อได้ทำการ login แล้ว
$me = null; 

// ถ้ามีการ login ดึงข้อมูลสมาชิกที่ login มาเก็บที่ตัวแปร $me เป็น array
if($session){
	try{
		$uid = $facebook->getUser(); // เก็บ id ของผู้ใช้ไว้ที่ตัวแปร $uid กรณีมีการล็อกอิน facebook อยู่
		$me = $facebook->api('/me'); // ดึงข้อมูลผู้ใช้ปัจจุบันทีล็อกอิน facebook มาเก็บในตัวแปร $me
	}catch (FacebookApiException $e) { // กรณีเกิดข้อผิดพลากแสดงผลลัพธ์ข้อผิดพลาดที่เกิดขึ้น
		error_log($e);
	}
}

echo $uid;
?>
name = <?php echo $me['name']; ?> 
<?php
////////////////////////////////////////////////////////////////////////////////
///       ส่วนของการใช้งาน
///////////////////////////////////////////////////////////////////////////////////
if(isset($_GET['logout'])){ // ทำการ logout อย่างสมบูรณ์
	$facebook->setSession(null); 	// ล่างค่า session ของ facebook
	header("Location:".$_SERVER['PHP_SELF']); //ลิ้งค์ไปหน้าที่ต้องการเมื่อ logout เรียบร้อยแล้ว
}
if($me){ // กรณีเงื่อน login อยู่
// เก็บค่า url ไว้ในตัวแปร $logoutUrl สำหรับ logout กรณีที่ได้ทำการ login อยู่
//	$logoutUrl = $facebook->getLogoutUrl(); // การกำหนดแบบปกติ
// การกำหนดแบบปกติ ค่า session ของ facebook ยังคงอยู่ แนะนำเป็นวิธีด้านล่าง

//   next คือ url ที่ต้องการลิ้งค์ไป เมื่อ logout แล้ว ในที่นี้กำหนด เป็น url ปัจจุบัน 
//   แต่เพิ่มตัวแปร get ชื่อ logout เพื่อกลับมาเข้าเงื่อนไข ทำลาย session ของ facebook
	$logoutUrl = $facebook->getLogoutUrl(
		array(
			'next'=>'http://www.lcdtvthailand.com/fb/test.php?logout'
		)
	); 
  
}else{  // กรณีเงื่อนไข logout
// เก็บค่า url ไว้ในตัวแปร $loginUrl สำหรับ login กรณีที่ยังไม่ได้ login
//  $loginUrl = $facebook->getLoginUrl();  // กำหนด url กรณีใช้งานปกติ
 
//  กำหนด url สำหรับ login กรณีเพิ่มเติมพิเศษ
//  next: คือ url ที่ต้องการใช้ลิ้งค์ไป เมื่อ login สำเร็จ
//  cancel_url: คือ url ที่ต้องการใช้ลิ้งค์ไป เมื่อ ผู้ใช้ยกเลิกการ login
//  req_perms: กำหนด การร้องขอส่วนของ permission เพิ่มเติมที่ต้องการให้ผู้ใช้อนุญาต
//  ดูได้จาก http://developers.facebook.com/docs/authentication/permissions
//  display:  รูปแบบหน้า login ที่ต้องการแสดง ปกติค่าจะเป็น page ถ้าไม่ได้กำหนด 
//  จะเป็นหน้า เพจ login ของ facebook ปกติ
//  การกำหนดแบบ popup จะมีปุ่ม cancel ให้เลือก และใช้กับ cancel_url แนะนำให้ใช้เป็น popup
   $loginUrl = $facebook->getLoginUrl(
   		array(
			'next'=>'http://www.lcdtvthailand.com/fb/test.php',
			'cancel_url'=>'http://www.lcdtvthailand.com/fb/test.php',
			'req_perms'=>'offline_access,user_photos', // คั่นแต่ละค่าด้วย ,(comma)
			'display'=>'popup'	 // page หรือ popup		
		)
   );
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>facebook use php sdk login logout</title>
</head>
<body>
<?php if($me){ ?>
<a href="<?=$logoutUrl?>">Facebook Logout</a>
<?php }else{ ?>
<a href="<?=$loginUrl?>">Facebook Login</a>
<?php } ?>
<?php
pre($me);
?>
</body>
</html>


Wera 223.207.92.xxx 08-01-2011 14:30
 ความคิดเห็นที่ 4
<?php
session_start(); // กำหนดไว้ กรณีอาจได้ใช้ตัวแปร session

include("facebook.php"); //  เรียกใช้งานไฟล์ php-sdk สำหรับ facebook

// สร้าง Application instance.
$facebook = new facebook(array(
  'appId'  => '189905577691269', // appid ที่ได้จาก facebook   
  'secret' => '303705ed0bd5e167e525cd72ae2eacc7', // app secret ที่ได้จาก facebook   
  'cookie' => true, // อนุญาตใช้งาน cookie   
));


// ตรวจสอบสถานะการ login
$session = $facebook->getSession();

// สร้างฟังก์ชันไว้สำหรัดทดสอบ การแสดงผลการใช้งาน
function pre($varUse){
	echo "<pre>";
	print_r($varUse);
	echo "</pre>";
}
// สร้างตัวแปรสำหรับเก็บข้อมูลของสมาชิกเมื่อได้ทำการ login แล้ว
$me = null; 

// ถ้ามีการ login ดึงข้อมูลสมาชิกที่ login มาเก็บที่ตัวแปร $me เป็น array
if($session){
	try{
		$uid = $facebook->getUser(); // เก็บ id ของผู้ใช้ไว้ที่ตัวแปร $uid กรณีมีการล็อกอิน facebook อยู่
		$me = $facebook->api('/me'); // ดึงข้อมูลผู้ใช้ปัจจุบันทีล็อกอิน facebook มาเก็บในตัวแปร $me
	}catch (FacebookApiException $e) { // กรณีเกิดข้อผิดพลากแสดงผลลัพธ์ข้อผิดพลาดที่เกิดขึ้น
		error_log($e);
	}
}

echo $uid;
?>
name = <?php echo $me['name']; ?> 
<?php
////////////////////////////////////////////////////////////////////////////////
///       ส่วนของการใช้งาน
///////////////////////////////////////////////////////////////////////////////////
if(isset($_GET['logout'])){ // ทำการ logout อย่างสมบูรณ์
	$facebook->setSession(null); 	// ล่างค่า session ของ facebook
	header("Location:".$_SERVER['PHP_SELF']); //ลิ้งค์ไปหน้าที่ต้องการเมื่อ logout เรียบร้อยแล้ว
}
if($me){ // กรณีเงื่อน login อยู่
// เก็บค่า url ไว้ในตัวแปร $logoutUrl สำหรับ logout กรณีที่ได้ทำการ login อยู่
//	$logoutUrl = $facebook->getLogoutUrl(); // การกำหนดแบบปกติ
// การกำหนดแบบปกติ ค่า session ของ facebook ยังคงอยู่ แนะนำเป็นวิธีด้านล่าง

//   next คือ url ที่ต้องการลิ้งค์ไป เมื่อ logout แล้ว ในที่นี้กำหนด เป็น url ปัจจุบัน 
//   แต่เพิ่มตัวแปร get ชื่อ logout เพื่อกลับมาเข้าเงื่อนไข ทำลาย session ของ facebook
	$logoutUrl = $facebook->getLogoutUrl(
		array(
			'next'=>'http://www.lcdtvthailand.com/fb/test.php?logout'
		)
	); 
  
}else{  // กรณีเงื่อนไข logout
// เก็บค่า url ไว้ในตัวแปร $loginUrl สำหรับ login กรณีที่ยังไม่ได้ login
//  $loginUrl = $facebook->getLoginUrl();  // กำหนด url กรณีใช้งานปกติ
 
//  กำหนด url สำหรับ login กรณีเพิ่มเติมพิเศษ
//  next: คือ url ที่ต้องการใช้ลิ้งค์ไป เมื่อ login สำเร็จ
//  cancel_url: คือ url ที่ต้องการใช้ลิ้งค์ไป เมื่อ ผู้ใช้ยกเลิกการ login
//  req_perms: กำหนด การร้องขอส่วนของ permission เพิ่มเติมที่ต้องการให้ผู้ใช้อนุญาต
//  ดูได้จาก http://developers.facebook.com/docs/authentication/permissions
//  display:  รูปแบบหน้า login ที่ต้องการแสดง ปกติค่าจะเป็น page ถ้าไม่ได้กำหนด 
//  จะเป็นหน้า เพจ login ของ facebook ปกติ
//  การกำหนดแบบ popup จะมีปุ่ม cancel ให้เลือก และใช้กับ cancel_url แนะนำให้ใช้เป็น popup
   $loginUrl = $facebook->getLoginUrl(
   		array(
			'next'=>'http://www.lcdtvthailand.com/fb/test.php',
			'cancel_url'=>'http://www.lcdtvthailand.com/fb/test.php',
			'req_perms'=>'offline_access,user_photos', // คั่นแต่ละค่าด้วย ,(comma)
			'display'=>'popup'	 // page หรือ popup		
		)
   );
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>facebook use php sdk login logout</title>
</head>
<body>
<?php if($me){ ?>
<a href="<?=$logoutUrl?>">Facebook Logout</a>
<?php }else{ ?>
<a href="<?=$loginUrl?>">Facebook Login</a>
<?php } ?>
<?php
pre($me);
?>
</body>
</html>

อันนี้นะคับ



Wera 223.207.92.xxx 08-01-2011 14:33
 ความคิดเห็นที่ 5

www.lcdtvthailand.com/fb/test.php 

ทดสอบไฟล์นี้คับ



Wera 223.207.92.xxx 08-01-2011 14:37
 ความคิดเห็นที่ 6

ไฟล์น่าจะติด BOM ทำให้ session ไม่ทำงาน
เอา BOM ออก
ถ้าใช้ dream เปิดไฟล์ คลิกขวา
- เลือก page properties
- คลิกที่ Title/Encoding
- หาคำว่า BOM แล้ว เอาเครื่องหมายคลิกถูก ด้านหน้าออก



Ninenik 124.120.1.xxx 08-01-2011
 ความคิดเห็นที่ 7

ลองดูแล้วครับ ไม่ได้ติ๊กไว้อยู่แล้วคับ

ปัญหจะเกิดจากอะไรได้อีกคับ



Wera 223.207.92.xxx 08-01-2011 17:57
 ความคิดเห็นที่ 8

ทำไงดีคับไม่ได้สักที



Wera 223.204.199.xxx 10-01-2011 12:59
 ความคิดเห็นที่ 9

ถ้า Server เป็น windows  Os จะเกี่ยวกับไฟล์ fb_ca_chain_bundle.crt  เป็นใบ Cer เพื่อความปลอดภัย มันอาจติดปัญหาที่ CH 60



นายเสถียร 203.172.221.xxx 24-06-2011 18:33
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ