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

歡迎留言

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

站內搜尋



本站其他服務

本站其他軟體



  • 國道一路通(FreeWay)

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


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

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


  • 當令蔬果花卉(AgriInfo)

    是不是常常在超市看到水果蔬菜的價格,總是不確定是當季蔬果?這個服務就是幫你很快判斷眼前的蔬果花卉的價格是否便宜。


  • 台灣空污警報(AirInfo)

    設定特定站點為推播通知關注點後,當該站點空氣品質變糟時,即時推播通知給您。另外提供站點附近基本天氣預測資料。


  • 下一班火車 (nextRail)

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


  • 藝文快訊

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