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

站內搜尋



本站其他服務

本站其他軟體



  • 下一台單車(NextBike)

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


  • 姓名筆畫吉凶查詢系統

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


  • 油價快訊App (OilPrices)

    依據油價及匯率,估算台灣下週油價,另外提供三週、一年以及三年的歷史變化,以及週末下午推播通知最新油價預估或公告。


  • 下一班高鐵 (nextTHSR)

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


  • 批踢踢快訊 (pttNews)

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


  • 國道一路通(FreeWay)

    打開定位即實際地圖上繪製所在地中心附近的車況圖,可縮放地圖,不再是小小的縮小圖,快速了解高速公路的路況。