2016-06-21 98 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'); 
相关问题