วิธีแก้เมื่อ app facebook error ว่า Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user by

29
Apr
6

สืบเนื่องจากโปรเจกการฝึกงานของผมคือการทำ application ขึ้น Facebook โดยใช้ php-sdk และ javascript-sdk ในการทำ แต่เมื่อทำเสร็จและอัพขึ้น Facebook เรียบร้อย เมื่อตอนที่กำลังจะเข้าขั้นตอนเพื่อขอ permission กลับเกิด error พิสดารขึ้นมาว่า
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user.thrown in xxxxx(ที่อยู่แอพเราบน server)/facebook.php line 560 (บางคนก็เกิดที่บรรทัดอื่น แต่เชื่อว่าน่าจะมาจากสาเหตุเดียวกัน) ซึ่ง error นี้เกิดจากการที่ user ยังไม่ได้ log in เข้า Facebook หรืออาจจะเป็น access token ที่มีนั้นหมดอายุไปแล้ว ซึ่งวิธีแก้ก็คือลองเรียก session Facebook ออกมาดู ถ้า session ไม่สามารถใช้ได้ให้ redirect ไปยังหน้า login ก่อน อธิบายไปอาจไม่เห็นภาพเรามาดูโค้ดดีกว่า

$facebook = new Facebook(array(
‘appId’  => $appId,
‘secret’ => $secret,
‘cookie’ => true,
));

$redirect_url = $facebook->getLoginUrl(array(‘canvas’ => 1,
‘fbconnect’ => 0,
‘next’ => $start_page(page ที่จะไปเมื่อ log in เสร็จ)
));

$session = $facebook->getSession();

if($session) {
    // i am logged in
    $this->me = $facebook->api('/me?access_token='.$session['access_token']);
 } else {
    // not logged in
    echo '<script type="text/javascript">top.location.href = \''.$redirect_url.'\';</script>';
}

ซึ่งโค้ดข้างต้นสามารถแก้ปัญหา error ดังกล่าวได้เป็นอย่างดี ทว่ามีบางกรณีที่ยังเกิด error อยู่ก็คือ cookie ที่ใช้เก็บ session ในขณะนั้น ซึ่งบางครั้งที่เราปิด browser ไปแต่
cookie ยังคงเก็บค่าไว้ วิธีแก้ก็คือก่อนจะทำการเรียก session ใหม่ ให้ทำการลบ cookie เดิมของแอพนี้ออกก่อน ดังนี้

if ($session) {
      try {
      $me = $facebook->api('/me?access_token='.$session['access_token']);
     } catch (FacebookApiException $e) {
       error_log($e);
       unset($_COOKIE['fbs_' .$appId]);
      $facebook = new Facebook(array(
       'appId'  => $appId,
        'secret' => $secret,
         'cookie' => true,
         ));
         $session = $facebook->getSession();
         $me = $facebook->api('/me?access_token='.$session['access_token']);
        }
     }

 อ้างอิง
http://forum.developers.facebook.net/viewtopic.php?id=95536

concept เบื้องต้นเกี่ยวกับ html กับ php by

31
Mar
2

เนื่องจากผมเป็นเด็กฝึกงานใหม่ของ levelup และไม่มีพื้นฐานการเขียนเว็บมาก่อนเลย ดังนั้นเรื่องที่จะนำเสนอในคราวนี้ก็น่าจะเป็นเรื่องที่โปรแกรมเมอร์ส่วนใหญ่รู้ดีกันอยู่แล้ว (แต่ใหม่สำหรับผม 55) นั่นก็คือการเขียนเว็บด้วย html กับ php

เว็บไซต์ในปัจจุบันที่เราเปิดด้วย Web Browser ต่างๆ เช่น Firefox,IE  นั้น ส่วนใหญ่จะใช้ภาษา html (hypertext markup language) ในการแสดงผล  ซึ่งหากใช้ html ในการเขียนเว็บเพียงอย่างเดียว(สมัยก่อน) เราจะไม่สามารถให้บริการอะไรต่างๆแก่ user ได้นอกจากแสดงผลหรือนำเสนอข้อมูลเพียงอย่างเดียว (เรียกว่า Brochure Web) แต่ปัจจุบัน เว็บไซต์สามารถทำอะไรได้หลายอย่าง เช่น google สามารถ search หาข้อมูลได้ เป็นต้น ซึ่งการที่เว็บไซต์จะสามารถทำอะไรได้หลายๆอย่างมากกว่าแค่แสดงผลเฉยๆ จำเป็นต้องมีตัวช่วย ซึ่งในที่นี้ก็คือ php นั่นเอง

PHP เป็นภาษาจำพวก scripting language คำสั่งต่างๆจะเก็บอยู่ในไฟล์ที่เรียกว่า สคริปต์ (script) และเวลาใช้งานต้องอาศัยตัวแปรชุดคำสั่ง ตัวอย่างของภาษาสคริปก็เช่น JavaScript, Perl เป็นต้น ลักษณะของ PHP ที่แตกต่างจากภาษาสคริปต์แบบอื่นๆ คือ PHP ได้รับการพัฒนาและออกแบบมา เพื่อใช้งานในการสร้างเอกสารแบบ HTML โดยสามารถสอดแทรกหรือแก้ไขเนื้อหาได้โดยอัตโนมัติ ดังนั้นจึงกล่าวว่า PHP เป็นภาษาที่เรียกว่า server-side หรือ HTML-embedded scripting language เป็นเครื่องมือที่สำคัญชนิดหนึ่งที่ช่วยให้เราสามารถสร้างเอกสารแบบ Dynamic HTML ได้อย่างมีประสิทธิภาพและมีลูกเล่นมากขึ้น ง่ายๆคือ php จะทำการประมวลผลที่ฝั่ง server นั่นเอง ส่วนการใช้ php นั้นสามารถแทรกโค้ด php ลงไปในโค้ด html ได้ทันที โดยจะต้องมีเครื่องหมาย<? ?> คร่อมโค้ดส่วนที่เป็น php เอาไว้ เช่น

<html>

<body>

woww<br>

<?php $a=”woww”;

echo $a?>

</body>

</html>

OUTPUT

woww

woww

เพื่อง่ายต่อการเข้าใจมาดูภาพประกอบกันดีกว่า

ภาพจาก: www.noklek.com/wiki/index.php/PHP_&_MySQL_Bible

ภาพจาก: www.noklek.com/wiki/index.php/PHP_&_MySQL_Bible

จากภาพจะเห็นว่าเมื่อ user หรือ client ทำการร้องขอหน้าเว็บเพจที่เป็นแบบ php ไปยังเซิร์ฟเวอร์  เซิร์ฟเวอร์ก็จะเรียก  PHP  engine  ขึ้นมาแปลไฟล์  PHP  และติดต่อกับฐานข้อมูล  แล้วส่งผลลัพธ์ที่ได้จากการแปลและประมวลผลเป็นภาษา  html เพื่อนำไปแสดงผลให้ผู้ใช้ได้นำไปใช้งานต่อไป (ส่วนแสดงผลจะเป็นภาษา html ทั้งหมด)

จบไปแล้วสำหรับบทความเกี่้ยวกับ concept เบื้องต้น(มากๆ) ของ html กับ php ก็หวังว่ามันคงมีประโยชน์สำหรับผู้อ่านนะครับ  ขอบคุณที่อ่านครับ  -/\-

reference

http://203.172.220.170/opart/php/chapter1.html

http://www.rightsoftcorp.com/?name=news&file=readnews&id=11