FacebookのOAuthをログインメカニズムとして使用するPHPサイトを構築しています。問題は、ユーザーがログアウトして自分のサイトに戻ってきたときに、ユーザーが手動でページを更新するまで、サイトは少なくとも(少なくとも外観上)有効に記録されていることです。手作業での返信までFacebookのクッキーが保持されます
私はFacebook Cookieがリターンページがレンダリングを終了した後にのみ削除されるため、これが理由であると思われます。セッションの仕方に完全に精通しているわけではありません。 >サイトに戻ってリダイレクト(logout.php) - - > Facebookの にリダイレクト -
ユーザーは ログアウト>クリアローカルセッションを - > [ホームページ(index.phpを) にリダイレクト - まだ(>ページがレンダリングログイン) - >クッキーが削除されました - >手動リフレッシュ(index.php) - >ページのレンダリング(ログインしなくなりました)。
少し前にASP.NET MVCサイトで同様の問題が発生しました。私の修正は、ページがロードされた後、そして一旦クッキーが最終的に削除された後、JavaScriptでページを解析することでした。
私は何か間違っていると仮定して作業しています。 index.phpに、Facebookがリフレッシュせずにログアウトしていることを認識させるだけです。
私はheader()
を使ってlogout.phpからindex.phpにリダイレクトします。
header("Location: index.php");
編集:私はサイドステップのキャッシングの問題に順にリダイレクトURLに現在の時刻を追加しようとしている 。これは助けにはなりません。
EDIT: FireCookieのCookieアクティビティを監視すると、ページがレンダリングされた後にAuth Cookieが削除されるという疑いがバックアップされます。 FireCookieはサーバー側で何が起こっているのか私にはわからないので、これは明らかに決定的なものではありません。
JS回避策: 現在の回避策は、ページの読み込み時に次のスニペットを実行することです。$ fbUidはFacebookのユーザーIDです。それはJavaScriptに依存しているので、理想的ではありません。
FB.getLoginStatus(function(response) {
if (<?php echo $fbUid ? "true" : "false" ?> && response.session == null)
window.location.reload();
});
おそらくcacheing問題リッチ
@Marc B入力のためにありがとう、しかしそれは動作しませんでした。私は本当に、ページがブラウザに渡されるまで、実際にはクッキーが残っていると思っています。 – kim3er
次に、FirebugまたはHTTPFoxを使用して、リクエストのヘッダーを表示します。クッキーの表示と消滅を正確に確認することができます。 –
@Marc Bこれは、ページがレンダリングされた後にのみクッキーが削除されると私に信じさせた原因です。 – kim3er