0

私はlaravelを使用してFacebookアプリを構築しておりRedirect::to('thank_you')、フォームを送信した後にユーザーをサンキューページにリダイレクトするためにコードで使用しています。

function submitForm() {
    //Process input
    //Done, now redirect to thank you page
    Redirect::to('thank_you')
}

ただし、「thank_you」では Facebook のアクセス トークンがなくなっています。したがって、実行する必要が$facebook->api('/me')ある場合、有効なアクセス トークンが必要であるという例外がスローされます。

それは私を夢中にさせています!何か提案はありますか?

(私は現在、$_SESSION['user_token'] にアクセス トークンを保存しています。しかし、ユーザーがログアウトすると、これはまだ有効であるため、ユーザーはアプリで自分の FB アカウントからログアウトできません。クライアントはログアウトしません。サイトにログアウトボタンが欲しい)

//Fix for invalid access tokens
if(!isset($_REQUEST['code']) && isset($_SESSION['accessToken'])) {
    $this->facebook->setAccessToken($_SESSION['accessToken']);
} 
//if the user has just done facebook login & auth
else if(isset($_REQUEST['code'])) {
    $_SESSION['accessToken'] = $this->facebook->getAccessToken();
}
4

1 に答える 1

0

アプリが iframe 内にある場合 (Facebook キャンバス アプリやページ タブ アプリなど)、iframe 内から Cookie にアクセスできるようにブラウザーに指示する P3P ヘッダーを設定する必要があります。

header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');

これを行わないと、セッション Cookie がアプリに渡されず、ログアウトされます。

(これは、iframe 内にいる場合にのみ関連します)

編集:これは、p3pヘッダーが何をするかについての良い説明です

于 2013-04-07T10:33:09.280 に答える