วิธีแก้เมื่อ app facebook error ว่า Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user by sekson
Apr6
สืบเนื่องจากโปรเจกการฝึกงานของผมคือการทำ 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
Enjoy this article?
Consider subscribing to our RSS feed!
00:27 on November 15th, 2011
สวัสดีครับ พอดีผมติดปัญหานี้ ตอนลบ App แล้ว Install ใหม่ จะขึ้น แบบนี้แต่ว่า
เนื่อจากผมยังไม่ค่อยเข้าใจ เรื่องพวกนี้เท่าไหร่
อยากลบกวนถามว่า เจ้า
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']);
}
}
มีวางตรงส่วนไหนเหรอครับ รองวางหลายตำแหน่งแล้วมันไม่หายนะครับ
ในPage ผมใส่
$appId = ‘xxxxxxxxxxxxxxxxxxxxxxxxx’;
$secret = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxx’;
$start_page = “http://xxxxxxxxxxxxxxxxx/”;
$facebook = new Facebook(array(
‘appId’ => $appId,
‘secret’ => $secret,
‘cookie’ => true,
));
ผมว่ามันน่าใช้ด้วยกันได้แต่ผมไม่รู้ต้องวางไว้ก่อน Code ตัวไหนเหรอครับ ???
ขอบคุณครับ
09:10 on November 15th, 2011
ใส่ไว้บนสุดของไฟล์ php ก่อนมีการ echo ค่าใดๆ ออกมาครับ
09:11 on November 15th, 2011
http://blog.levelup.in.th/2010/08/30/start-facebook-application-tutorial-for-beginner-php-updated-graph-api%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3/
ลองทำตามไฟล์ตัวอย่างที่บทความนี้ดูนะครับ
13:55 on November 16th, 2011
ขอบคุณครับ ทำหลายแบบ แล้วไม่หาย ทั้งตาม Link ที่ให้มาด้วย ก็ยังไม่หาย
ปล่อยวางแล้วครับ 555+ เป็นเฉพาะ App ใหม่ ที่ติดตั้ง 2 ขั้นตอน – - นะครับ
03:37 on March 25th, 2012
คือเจอปัญหานี้เช่นกัน พอมาอ่านบล็อคนี้ แล้วมองหาโค้ดตัวอย่างไม่เจอค่ะ ต้องขอรบกวนช่วยแสดงโค้ดให้ดูหน่อยได้มั้ยคะ
04:06 on March 25th, 2012
อ่า เห็นโค้ดแล้วค่ะ อยู่ดีๆก็ขึ้นมา ทั้งๆที่รีเฟรชไปหลายรอบก่อนหน้า – -”
ขอบคุณมากๆนะคะ สำหรับคำแนะนำ ^^