2016-06-21 95 views
1

我有一個頁面選項卡應用程序,我從一個簽名的請求中獲取頁面ID。要獲得頁面我稱這個功能。Laravel 5 Facebook簽名請求函數獲取頁面ID

$facebook_page_id = get_Fb_Page_Id(); 

問題是,這隻有在我第一次調用該函數時纔有效。爲什麼是這樣?

恩exmaple應該是,我有一個首頁返回一些結果,但也是一個頁面,返回搜索結果。該功能僅適用於首頁,但不適用於返回搜索結果。

這是我的功能。只有

function get_Fb_Page_Id() 
{ 

    $fb = App::make('SammyK\LaravelFacebookSdk\LaravelFacebookSdk'); 
    $helper = $fb->getPageTabHelper(); 

    try { 
     $token = $fb->getCanvasHelper()->getAccessToken(); 
    } catch (Facebook\Exceptions\FacebookSDKException $e) { 
// Failed to obtain access token 
     dd($e->getMessage()); 
    } 

// $token will be null if the user hasn't authenticated your app yet 
    if (!$token) { 
// . . . 
    } 

    $id = $helper->getPageId(); 

    return $id; 

} 

回答

0

第一頁加載返回從Facebook的signed_request(如Facebook將以此爲POST到您的應用程序第一次加載)。在您的應用程序中的所有後續頁面請求(即提交表單或導航到其他頁面)都將丟失signed_request

要處理這種情況,您應該在初始加載時將signed_request數據添加到Session,然後在代碼中引用它。

例如,在第一負載(且僅當signed_requests存在),添加頁ID到會議:

Session::put('page_id', $helper->getPageId()); 

然後,在隨後的代碼,和其他頁面上的,只用在會話數據:

$page_id = Session::get('page_id'); 
相關問題