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

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

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

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

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

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



Wera 07-01-2011 21:14:31

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

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


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


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

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

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



Wera 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 07-01-2011
 ความคิดเห็นที่ 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?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 เพิ่มเติมที่ต้องการให้ผู้ใช้อนุญาต
//  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"
<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 08-01-2011 14:30
 ความคิดเห็นที่ 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?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 เพิ่มเติมที่ต้องการให้ผู้ใช้อนุญาต
//  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"
<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 08-01-2011 14:33
 ความคิดเห็นที่ 5

www.lcdtvthailand.com/fb/test.php 

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



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

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



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

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

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



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

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



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

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



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






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