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等等等 基本上都試過了 還有刪好友名單 所以想問一下 您上述的方法要怎麼試? 可以幫我翻譯成白話文嗎  謝謝

站內搜尋



本站其他服務

本站其他軟體



  • 下一班高鐵 (nextTHSR)

    這個 app 只要開啟後,就根據定位幫你過濾出最近高鐵站的時刻表,不用再按任何按鈕了,方便您在很快時間內確定要坐的哪一班高鐵


  • 條碼掃描器(QRCode)

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


  • 批踢踢快訊 (pttNews)

    身為鄉民的您,是不是常常覺得現在的批踢踢 (PTT) 閱讀器,明明您就只要看幾個板,都幫您分類好,但不是您要的?甚至您只想關注某個人(或某件事)的消息,卻散布在不同東西,找出來很辛苦? 這個 App 可以解決您這些問題,快來用吧!


  • 下一班火車 (nextRail)

    這個 app 只要開啟後,就根據定位幫你過濾出最近火車站的時刻表,不用再按任何按鈕了,方便您在很快時間內確定要坐的哪一班火車


  • 股海快訊 (iNews123)

    提供特定個股新聞更新推播、股價警示推播、新聞社群分享以及每日個股收盤價等功能的股票App/股市App.


  • 照片去背(PhotoEraser)

    一款方便移除背景的工具,產生透明背景圖可以存回原本相簿,也可分享到其他 App 使用.