2016-06-21 3 views
1

私は、署名付きリクエストからページIDを取得するページタブアプリケーションを持っています。ページを取得するには、この関数を呼び出します。Laravel 5 Facebookのページ署名要求機能

$facebook_page_id = get_Fb_Page_Id(); 

問題は、初めてこの関数を呼び出すときに問題があることです。どうしてこれなの?

私はいくつかの結果を返すスタートページと検索結果を返すページがあります。この機能は、スタートページでのみ機能しますが、検索結果を返すときには機能しません。

ここは私の機能です。 (Facebookが最初のロード時に、あなたのアプリにPOSTとしてこれを送信して)

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を返します。アプリケーション内の後続のページリクエスト(つまり、フォームの送信、または別のページへの移動)は、signed_requestを失います。

この状況に対処するには、初期ロード時にsigned_requestのデータをSessionに追加してから、これをコードの後半で参照する必要があります。後続のコードで、そして

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

を、そして他のページに、単にセッションデータを使用:

signed_requestsが存在する場合のみ)例えば、最初の負荷に、セッションにページIDを追加

$page_id = Session::get('page_id'); 
関連する問題