Session key invalid or no longer valid

2009/06/11
~ 阿亮 ~

在實做 facebook AP 時,由於一些 AJAX 的話,用 iframe 來做,比較方便,但在於 iframe 要去調 Server 端時,若又要用 facebook api 來調用相關使用者時,會有 Session 不符合的問題。

即會有 "Session key invalid or no longer valid" 的訊息。

用 facebook 去調用 Iframe 的程式,facebook 端會丟 $_POST[‘fb_sig_session_key’] 來做簡單的驗證機制,一般如下述所列的做法。

if (isset($_REQUEST['fb_sig_session_key'])) {
        $_SESSION['fb_sig_session_key'] = $_REQUEST['fb_sig_session_key'];
}
if (! empty($_SESSION['fb_sig_session_key'])) $this->facebook->api_client->session_key = $_SESSION['fb_sig_session_key'];

但這段會有上述的錯誤情形。

根據此頁的做法 ,要用下述的做法

$iframeSessionKeyName = $CONFIG['facebook']['apiKey'] . '_session_key';
if (isset($_REQUEST[$iframeSessionKeyName])) {
    $_SESSION['fb_sig_session_key'] = $_REQUEST[$iframeSessionKeyName];
}
else if (isset($_REQUEST['fb_sig_session_key'])) {
    $_SESSION['fb_sig_session_key'] = $_REQUEST['fb_sig_session_key'];
}
if (! empty($_SESSION['fb_sig_session_key'])) $this->facebook->api_client->session_key = $_SESSION['fb_sig_session_key'];

真是找好久的解法啊 

 

◎後來還是有時會遇到 session key invalid 的問題,可以試試下述方法,即在於 getInfo 遇到 exception  時,將 session 清除,重新 login.

try
    {
        $userLocale = $facebook->api_client->users_getInfo($fb_sig_user, 'locale');
    }
    catch (Exception $e)
    {
        // $facebook->expire_session();
        $facebook->set_user(null, null);
        $facebook->redirect($facebook->get_login_url(null,''));
    }

雖然,有的文章說要用 expire_session 的方法,但此 method 還是會讀 session 而無效。



4 Responses to “Session key invalid or no longer valid”

  • lala 說:

    請問這段程式應該放在哪裡?
    該放在被呼叫的ajax 的php裡面
    還是在原本的程式中
    是否可以再講詳細一點?感謝

  • Raxi 說:

    不好意思 我也跟您遇到一樣問題 用google找解法 找到您的這個網站 我該試的方法都試過了 換電腦 換瀏覽器 換密碼 刪cookie等等等 基本上都試過了 還有刪好友名單 所以想問一下 您上述的方法要怎麼試? 可以幫我翻譯成白話文嗎  謝謝

歡迎留言

敝站會審核留言的適宜性,您的留言可能會較晚發佈,而且小弟保留刪除的權利!!

站內搜尋



本站其他服務

本站其他軟體



  • 標案快訊

    讓你可以輕鬆追蹤含有您想要關注關鍵詞的任何採購標案,只要有最新的資訊,「標案快訊」即會推播通知給你.


  • 下一班公車(nextBus)

    這個 app 只要開啟後,就根據定位幫你過濾出附近站牌的時刻表,以及提供相關公車預計到站的時間,方便您在很快時間內確定要坐的哪一班公車


  • 下一台單車(NextBike)

    打開定位即搜尋附近二十點自行車站點,不塞滿全部站點資料到整個地圖上,所以畫面簡潔方便看清楚目前所在地,若需要搜尋地圖其他位置附近站點,再點擊地圖即可。


  • 姓名筆畫吉凶查詢系統

    這是一個提供中文字康熙筆畫的小軟體,並根據農民曆計算每個名字或公司名的總筆畫以及最後的吉凶數,共有四種模式


  • 條碼掃描器(QRCode)

    支援 QRCode and Barcodes、可連續快速掃描、自動對焦、可打開手電筒供掃描時使用


  • 臉書粉絲專頁搜尋 (FPSearch)

    不用登入臉書即可搜尋臉書粉絲專頁(臉書粉絲團)所公開的文章。您可以指定特定日期範圍之前的文章,也可設定搜尋粉絲專頁內包含特定關鍵詞的文章。